2013-04-25 33 views
1

如何發佈爲我的下面的代碼創建的excel實例?殺死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); 

//代碼發佈練成實例

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 { } 

請檢查,如果這是正確的。

我知道這是重複的,所有我叫你們的人是檢查這是否正確。

+0

也許看這裏的答案 - http://stackoverflow.com/q/9581689/2065121 – 2013-04-25 07:09:48

+0

不要使用每行超過一個點時,使用互操作對象。所以像這樣:'ES.oXL.Workbooks.Open(ExcelFilePath)'不幸的是需要分成4行。這在@ TimSchmelter的評論 – Dan 2013-04-25 07:13:32

回答

0

可以使用下列內容:

GC.Collect(); 
GC.WaitForPendingFinalizers(); 
GC.Collect(); 
GC.WaitForPendingFinalizers(); 
+0

@Filburt OP在這篇文章後編輯了他的問題。 – Freelancer 2013-04-25 07:10:21

+0

好吧,我的壞...我剛剛檢查了歷史,錯過了編輯自己的用戶編輯 – Filburt 2013-04-25 07:12:14

+0

好吧,謝謝你的分號。 – Freelancer 2013-04-25 07:14:23

相關問題