COM 操作Excel文档问题

cp298674954 2010-11-08 09:31:33
通过Com读取Excel文档后文档的目录下出现了临时文件 ~$***.xlsx 但是关闭文档后这个文件还在,如果下次打开这个文档就会提示这个文档正在编辑。。。这个问题怎么解决呢?
如下是操作Excel的类
public class ExcelDocument
{
string filePath;

private ExcelAPI.Workbook workbook;

public ExcelDocument(string filePath)
{
this.filePath = filePath;
}

public ExcelAPI.Workbook OpenDocument()
{
return this.openDocument(filePath);
}

public ExcelAPI.Workbook openDocument(string fileName)
{
object MissingValue = Type.Missing;
ExcelAPI.Application app = new ExcelAPI.Application();
workbook = app.Workbooks.Open(fileName, MissingValue,
MissingValue, MissingValue, MissingValue,
MissingValue, MissingValue, MissingValue,
MissingValue, MissingValue, MissingValue,
MissingValue, MissingValue, MissingValue,
MissingValue);

System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
app = null;

return workbook;
}

public void CloseDocument()
{
for (int i = 1; i < workbook.Sheets.Count; i++)
{
ExcelAPI.Worksheet workSheet = (ExcelAPI.Worksheet)workbook.Sheets[i];
System.Runtime.InteropServices.Marshal.ReleaseComObject(workSheet);
workSheet = null;
}
workbook.Close(true, null, null);
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
workbook = null;
GC.Collect();
}
}
...全文
69 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cp298674954 2010-11-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 fangxinggood 的回复:]

恩,你代码里,关键是缺少 app.Quit
[/Quote]
问题解决了 谢谢你
beargo 2010-11-08
  • 打赏
  • 举报
回复
读EXCEL是否用OLEDB当数据库去读会爽一点呢~
机器人 2010-11-08
  • 打赏
  • 举报
回复
恩,你代码里,关键是缺少 app.Quit
机器人 2010-11-08
  • 打赏
  • 举报
回复
CloseDocument() 方法里没有正常Close workbook,Quit application:

按照如下顺序退出:
workbook.Close()
ExcelAPI.Application app 应该改为类成员,以便CloseDocument里,调用app.Quit()
workbook,app都要设为null; //断开引用 这样ReleaseComObject()才起作用。

参看我的blog:
http://blog.csdn.net/fangxinggood/archive/2006/04/08/655313.aspx
cp298674954 2010-11-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sito_hongta 的回复:]

excel 退出后直接删除这个临时文件吧~
[/Quote]
什么意思 让用户手动删除?
sito_hongta 2010-11-08
  • 打赏
  • 举报
回复
excel 退出后直接删除这个临时文件吧~

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧