簡體   English   中英

.Net Excel 互操作刪除工作表

[英].Net Excel Interop Deleting a worksheet

I'm trying to delete a worksheet from a excel document from a.Net c# 3.5 application with the interop Excel class (for excel 2003).

我嘗試了很多事情,例如:

Worksheet worksheet = (Worksheet)workbook.Worksheets[1];
worksheet.Delete();

它不起作用,也不會引發任何錯誤......

經過一個多小時的尋找,我找到了答案:

xlApp.DisplayAlerts = false;
worksheet.Delete();
xlApp.DisplayAlerts = true;

在處理刪除Excel Worksheets時,需要了解兩件重要的事情:

  1. Excel 互操作從 1 開始計數(而不是從零開始),因此,刪除第二項將導致第三項取而代之。因此,刪除工作表的正確方法是從最后一項到第一項

     // Remove LAST worksheet MyWorkBook.Worksheets[3].Delete(); // and only then remove the second (which is the last one) MyWorkBook.Worksheets[2].Delete();

    或者,您可以刪除列表中的第二項 ([2])兩次,這將為您提供相同的結果。

  2. 當您只剩下一個工作表時,以下行將引發異常:

     MyWorkBook.Worksheets[1].Delete();

同樣重要的是要注意工作簿必須至少包含一個工作表; 這意味着您不能刪除工作簿中的所有工作表。

嘗試按名稱查找工作表:

var app = new Microsoft.Office.Interop.Excel.Application();
var workbook = app.Workbooks.Add();
((Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets["Sheet3"]).Delete();

我們從 c# 控制台應用程序中刪除 excel 工作表,如下所示:

 Microsoft.Office.Interop.Excel.Worksheet worksheet = 
 (Worksheet)workbook.Worksheets["Worksheet_Name" (or) "Countings"];
 worksheet.Delete();

我們可以像這樣刪除工作表

 Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();

                if (xlApp == null)
                {

                    return;
                }


                xlApp.DisplayAlerts = false;
                string filePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
                                        + "\\Sample.xlsx";
                Excel.Workbook xlWorkBook = xlApp.Workbooks.Open(filePath, 0, false, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);
                Excel.Sheets worksheets = xlWorkBook.Worksheets;

                worksheets[4].Delete();
                worksheets[3].Delete();
                xlWorkBook.Save();
                xlWorkBook.Close();

                releaseObject(worksheets);
                releaseObject(xlWorkBook);
                releaseObject(xlApp);

並使用它

  static void releaseObject(object obj)
        {
            try
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
                obj = null;
            }
            catch (Exception ex)
            {
                obj = null;
                throw ex;

            }
            finally
            {
                GC.Collect();
            }
        }
Microsoft.Office.Interop.Excel.Worksheet worksheet = Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets[1];
worksheet.Delete();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM