尝试打开Excel文件时提示消息

时间:2012-11-26 09:04:48

标签: c# excel io

我有一个打开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

那么这个提示的问题是什么?

2 个答案:

答案 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库)。