c# - COMexception未处理-不能访问只读文档

本文关键字:只读 文档 访问 未处理 COMexception 不能 | 更新日期: 2023-09-27 18:16:36

我是c#新手,试图通过互操作库完成一些简单的excel操作。

我想删除一个文本值,它总是显示为实际数据表下面的单独一行(与表和文本之间的空白行)。它是a 'rows selected。在自动报告中打印出来的计数。它总是出现在第一列。

错误"COMexception未处理-无法访问只读文档- test1.xlsx"出现在行被删除后,我试图关闭()工作簿。

我似乎不能释放工作簿,我已经尝试了很多随机垃圾收集方法在其他论坛上发现,但有人见过这个吗?

感谢你的帮助!

EDIT -所以文件不是只读的,直到我开始运行程序。一旦我运行程序,它就变成了锁定和只读的。没有关闭/释放工作簿…

EDIT -我最终添加了一个Workbook.Save()函数并使用了Application对象的Quit()函数。这个问题也很有用(类似的问题)。

        public void ExcelManip(string thisFileName)
        {
            Workbook workBook = _excelApp.Workbooks.Open(thisFileName,
                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);
            DeleteRowCount(ref workBook);
            workBook.Save();
            workBook.Close(false, Type.Missing, Type.Missing);
            _excelApp.Application.Quit();
            _excelApp.Quit();
            //workBook.Close(true, thisFileName);//ERROR;Cannot access read-only document
            //Marshal.ReleaseComObject(workBook);
            //GC.Collect();
            //GC.WaitForPendingFinalizers();
        }

c# - COMexception未处理-不能访问只读文档

我最终添加了一个Workbook.Save()函数并使用了Application对象的Quit()函数。这个问题也很有用(类似的问题)