我有一个打开Excel文件并阅读内容的代码。每次我第一次运行代码时,它会打开Excel文件而不会提示我。但从第二次开始,它总是提示我这个消息
用户正在修改TestFile.xlsx 1.以只读方式打开
并始终提示代码的这一部分:
Excel ._Workbook xlsBook = xlsApp .Workbooks.Open (_fileName,0,false,5 ,"","",false ,Excel .XlPlatform .xlWindows ,"",true ,false ,0,true ,false ,false );
注意:我也在操作完成后关闭文件并使用VS 2012
那么这个提示的问题是什么?
答案 0 :(得分:0)
运行代码并退出后,查看taskmanager,很可能是EXCEL.EXE实例仍在运行。
你很可能没有发布所有的com对象,如:
System.Runtime.InteropServices.Marshal.ReleaseComObject(_theWorkbook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(_sheets);
System.Runtime.InteropServices.Marshal.ReleaseComObject(_workSheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(_range);
System.Runtime.InteropServices.Marshal.ReleaseComObject(_excelObj);
答案 1 :(得分:0)
确保没有资源仍然可以打开文件。你可以发布你用来关闭资源的代码吗?也许那里有一个错误。
最后,尽管它很丑陋,但它对于测试目的是有效的:尝试在关闭文件后手动调用垃圾收集器。
最后,考虑使用OpenXml API来处理Excel / Word文件,而不是Interop DLL(请记住,这些要求客户端安装Excel,而不是可以随应用程序部署的OpenXml库)。