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 に答える