0

我有一个打开 Excel 文件并读取内容的代码。每次我第一次运行代码时,它都会打开 Excel 文件而不提示我。但是从第二次开始它总是提示我这个消息

用户 1 正在修改 TestFile.xlsx。以只读方式打开

它总是在这部分代码提示:

Excel ._Workbook  xlsBook = xlsApp .Workbooks.Open (_fileName,0,false,5 ,"","",false ,Excel .XlPlatform .xlWindows ,"",true ,false ,0,true ,false ,false );

注意:我也在操作完成后关闭文件并使用 VS 2012

那么这个提示可能是什么问题?

4

2 回答 2

0

运行代码并退出后,查看任务管理器,很可能 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);
于 2012-11-26T09:12:37.753 回答
0

确保没有资源仍然可以打开文件。你能发布你用来关闭资源的代码吗?也许那里有错误。

最后,尽管它很丑陋,但它对于测试目的是有效的:尝试在关闭文件后手动调用垃圾收集器。

最后,考虑使用 OpenXml API 来处理 Excel/Word 文件,而不是 Interop DLL(请记住,这些需要客户端安装 Excel,而不是您可以与应用程序一起部署的 OpenXml 库)。

于 2012-11-26T09:12:54.610 回答