2013-10-28 50 views
1

我已經編寫了以下代碼以從Excel工作簿中刪除Excel工作表。代碼不會引發任何錯誤,但打開Excel時不會刪除表單。刪除Excel工作表的代碼不起作用

public void EXcelCleanup(string Excelpath) 
{ 
      Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application(); 
      excelApp.DisplayAlerts = false; 
      string WorkbookLocation = Excelpath; 
      Microsoft.Office.Interop.Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(WorkbookLocation, 
      0, false, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", 
      true, false, 0, true, false, false); 
      Microsoft.Office.Interop.Excel.Sheets worksheets = excelWorkbook.Worksheets; 

      int wsCount = worksheets.Count; 

      if (wsCount > 1) 
      { 
       for (int i = 2; i <wsCount-1; i++) 
       { 
        worksheets[i].Delete(); 
       } 
      } 

      excelWorkbook.Save(); 
      excelWorkbook.Close(); 
      Marshal.ReleaseComObject(worksheets); 
      excelApp.Quit(); 
} 

回答

1

一些指針。

  1. 隨着.Net 4.0你有可選的參數,所以你可能不需要提供所有參數來打開電子表格。

  2. 刪除表中的反向循環:

    for (int i = wsCount-1; wsCount-1 > 1; i--) worksheets[i].Delete();

  3. 你不需要的if (wsCount > 1)作爲循環具有這個條件。

  4. excelWorkbook.Save();之前設置excelWorkbook.Saved = true;以避免excel提示您保存。

  5. 檢查您是否以只讀模式打開電子表格。

+0

我想是的,該文件可能在執行此代碼期間處於只讀模式,所以在執行此代碼之前要添加什麼以使其不會只讀。 – priya

+0

嘿我得到我的答案需要關閉此代碼之前的工作簿。謝謝 :) – priya