我是 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();
}