C# - COMexception未处理 - 无法访问只读文档?

时间:2013-06-01 15:24:55

标签: c# excel-interop

我是C#的新手,并尝试通过互操作库完成一些简单的Excel操作。

我想删除一个文本值,该值始终显示为实际数据表下方的单独行(表和文本之间有一个空行)。这是一个“行选中”。计数在自动报告中打印出来的。它总是出现在第一列。

删除行后出现错误“COMexception unhandled - 无法访问只读文档 - test1.xlsx”,我尝试Close()工作簿。

我似乎无法发布工作簿,我尝试过在其他论坛上发现的大量随机垃圾收集方法,但之前有人见过这个吗?

感谢帮助!

编辑 - 因此在我开始运行程序之前,该文件不是只读的。一旦我运行程序,它就会被锁定并且只读。它没有关闭/发布工作簿......

编辑 - 我最终添加了一个Workbook.Save()函数并使用了Application对象的Quit()函数。这个问题也非常有用(similar question)。

        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();

        }

1 个答案:

答案 0 :(得分:1)

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