1

我编写了以下代码来从 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();
}
4

1 回答 1

1

几个指针。

  1. 使用 .Net 4.0,您有可选参数,因此您可能不需要提供所有参数来打开电子表格。

  2. 在反向循环中删除工作表:

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

  3. 你不需要,if (wsCount > 1)因为循环有这个条件。

  4. 在前面设置excelWorkbook.Saved = true;右边excelWorkbook.Save();,避免excel提示你保存。

  5. 检查您没有以只读模式打开电子表格。

于 2013-10-28T07:17:44.050 回答