2 回答
TA贡献1876条经验 获得超6个赞
在您的 try catch 中,您应该关闭 Excel。像这样
try{
//Some code
}
catch{
Marshal.ReleaseComObject(xlWorksheet);
myExcelWorkbook.Close();
myExcelApp.Quit();
}
当它失败时,它不会关闭 Excel。
TA贡献1834条经验 获得超8个赞
您正在释放try-catch集团之外的对象。在捕获中,即使有新消息,您也会创建一个新异常。当您从 catch 块创建新异常时,您的原始异常消失了。被认为是一种不好的做法。
您必须释放catch或finally块内的对象。根据您的代码,您的对象在崩溃后仍然存在。
顺便说一句,要使用 Excel,我会推荐EPPlus库。它将执行您需要的所有操作,而无需在服务器上安装 Excel(再次不好的做法)。
更新
清理所有对象:
System.Runtime.InteropServices.Marshal.ReleaseComObject(startCell );
System.Runtime.InteropServices.Marshal.ReleaseComObject(endCell);
System.Runtime.InteropServices.Marshal.ReleaseComObject(writeRange);
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlRange );
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorksheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlRange );
startCell = null;
endCell = null;
writeRange = null;
myExcelApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(myExcelApp);
myExcelApp = null;
myExcelWorkbook = null;
System.GC.Collect();
GC.WaitForPendingFinalizers();
- 2 回答
- 0 关注
- 209 浏览
添加回答
举报