0

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

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

删除行后出现错误“COMexception unhandled - Cannot access read-only document - test1.xlsx”,我尝试关闭()工作簿。

我似乎无法发布工作簿,我尝试了很多在其他论坛上找到的随机垃圾收集方法,但有人见过吗?

感谢帮助!

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

编辑 - 我最终添加了一个 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();

        }
4

1 回答 1

1

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

于 2013-06-01T23:27:00.730 回答