C#Excel工作簿已closures,但无法移动该文件
我正在打开一个Excel文件
app = new Microsoft.Office.Interop.Excel.Application(); wb = app.Workbooks.Open(fromFile, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
然后我操纵细胞,这工作正常。 我将文件保存到antother文件夹,比我打开它。
wb.SaveAs(toFile, Microsoft.Office.Interop.Excel.XlFileFormat.xlCSVWindows, Type.Missing, Type.Missing, false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Microsoft.Office.Interop.Excel.XlSaveConflictResolution.xlLocalSessionChanges, false, Type.Missing, Type.Missing, true);
我closures了应用程序和工作簿:
wb.Close(true, Type.Missing, Type.Missing); app.Quit();
当我现在想通过File.Move()移动原始文件时,出现错误:
该进程无法访问该文件,因为正在被另一个文件使用
处理。
我错过了什么吗?
编辑:
非常感谢你们。 这是对象的错误释放。
Marshal.FinalReleaseComObject(object)
编辑2:
那么,但现在我可以运行一次,现在我总是得到错误:
此文件当前不可用于此计算机上。
结合一个COMException
被调用的对象已经与客户端断开连接。
你需要使用
Marshal.ReleaseComObject(Object_to_be_released)
用于互操作服务中使用的所有对象。
_xlApp.Quit(); Marshal.ReleaseComObject(_xlApp);
在将excel文件从源文件夹移动到目标文件夹之前,您需要释放所有与excel文件相关的参考。 你想发布的参考文献在Grand Crofton给出的答案中列出请参考他的回答: 如何发布excel过程?