C# 尝试打开excel文件时的提示消息

C# 尝试打开excel文件时的提示消息,c#,excel,io,C#,Excel,Io,我有一个打开Excel文件并读取内容的代码。每次我第一次运行代码时,它都会打开Excel文件而不提示我。但从第二次开始,它总是提示我这个消息 用户1正在修改TestFile.xlsx。以只读方式打开 它总是在代码的这一部分提示: Excel ._Workbook xlsBook = xlsApp .Workbooks.Open (_fileName,0,false,5 ,"","",false ,Excel .XlPlatform .xlWindows ,"",true ,false ,0,t

我有一个打开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 );
NB:操作完成后,我还使用VS 2012关闭了文件


那么这个提示会有什么问题呢???

在运行代码并退出后,请查看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);

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

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


最后,考虑使用OpenXML API来处理Excel/Word文件,而不是互操作DLL(记住这些要求客户端安装了Excel,而不是与应用程序一起部署的OpenXML库)。

您打开文件一次,并且因为它没有共享,当您再次尝试打开它时,您只能以只读方式打开它,因为一次只有一个用户可以编辑它。也许创建一个共享的Excel文件会对您有所帮助。(Excel的基础知识)是否再次打开该文件?还是你先关闭了文件。如果您关闭了该文件并收到此消息,则可能是时间问题(特别是如果该文件位于文件服务器上),因为(最近)关闭的文件尚未发布。你能接受只读吗?否则,请尝试添加暂停以提供释放文件的时间。