我是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();
}
答案 0 :(得分:1)
我最终添加了一个Workbook.Save()函数并使用了Application对象的Quit()函数。这个问题也非常有用(similar question)。