【发布时间】:2013-04-25 15:21:01
【问题描述】:
如何释放为我的以下代码创建的 excel 实例?杀死 excel 实例。
Excel.Workbook Workbook1 = xCel.Workbooks.Open(ExcelFilePath);
Excel.Workbook Workbook2 = xCel.Workbooks.Add();
foreach (Excel.Worksheet dummysheet in Workbook1.Worksheets)
{
dummysheet.Copy(Workbook2.Worksheets[1],Type.Missing);
}
Workbook2.SaveAs(strFileCopyPath);
//释放excel实例的代码
if (sourceWorkbook != null)
{
sourceWorkbook = null;
destinationWorkbook = null;
Thread.Sleep(500);
}
if (status.ProcessID > 0)
{
Process p = Process.GetProcessById(status.ProcessID);
p.Kill();
}
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
GC.WaitForPendingFinalizers();
try { Marshal.FinalReleaseComObject(sourceWorkbook); }
catch { }
try { Marshal.FinalReleaseComObject(destinationWorkbook); }
catch { }
请检查是否正确。
我知道这是重复的,我只是要求你们检查这是否正确。
【问题讨论】:
-
也许在这里看看答案 - stackoverflow.com/q/9581689/2065121
-
在使用互操作对象时,每行不要使用多个点。所以像这样:
ES.oXL.Workbooks.Open(ExcelFilePath)不幸的是需要分成 4 行。这在@TimSchmelter 评论中的链接中进行了解释
标签: c#