C# 发布excel实例
如何发布为我的以下代码创建的excel实例?杀死excel实例C# 发布excel实例,c#,C#,如何发布为我的以下代码创建的excel实例?杀死excel实例 Excel.Workbook Workbook1 = xCel.Workbooks.Open(ExcelFilePath); Excel.Workbook Workbook2 = xCel.Workbooks.Add(); foreach (Excel.Worksheet dummysheet in Workbook1.Worksheets) { dummysh
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 { }
请检查这是否正确
我知道这是重复的,我只要求你们检查一下这是否正确。可以使用以下命令:
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
GC.WaitForPendingFinalizers();
也许看看这里的答案——在使用互操作对象时,不要每行使用超过一个点。所以类似这样的东西:
ES.oXL.Workbooks.Open(ExcelFilePath)
不幸地需要分成4行。这在@TimSchmelter's的链接中有解释comment@FilburtOP在这篇文章后编辑了他的问题。好吧,我的错。。。我只是检查了历史记录,错过了用户在编辑自己时编辑的机会。好的,谢谢你用分号。