我正在通过
打开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);
然后我操纵细胞,效果很好。我将文件保存到另一个文件夹,而不是我打开它。
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);
我关闭了应用和工作簿:
wb.Close(true, Type.Missing, Type.Missing);
app.Quit();
当我现在想通过File.Move()移动原始文件时,我收到错误:
该进程无法访问该文件,因为它正由另一个
使用过程。
我错过了什么吗?
编辑:
非常感谢你们。它一直是对象的缺失版本。
Marshal.FinalReleaseComObject(object)
编辑2:
好吧,但现在我可以运行一次,现在我总是得到错误:
此文件目前无法在此计算机上使用。
结合COMException
调用的对象已与其客户端断开连接。
答案 0 :(得分:4)
您需要使用
Marshal.ReleaseComObject(Object_to_be_released)
用于互操作服务中使用的所有对象。
_xlApp.Quit();
Marshal.ReleaseComObject(_xlApp);
答案 1 :(得分:0)
在将excel文件从源文件夹移动到目标文件夹之前,您需要释放与excel文件相关的所有引用。 您想要发布的参考文献列在Grand Crofton给出的答案中 请参考他的回答:How to release excel process?