Excel から最初の数行を削除し、ファイルを .csv にフォーマットするための C# アプリがありますが、.xlsx ではなく .xlsm を取得し、操作方法が見つからず、列からデータをロードすることさえできません。SAP からのレポート ファイルがあり、内部にマクロが見つかりません。私はこのようなことを試しました
/* Load Excel File */
Excel.Application excelApp = new Excel.Application();
string workbookPath = @"file.xlsm";
Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(workbookPath, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
/* Load worksheets collection */
Excel.Sheets excelSheets = excelWorkbook.Worksheets;
/* Select first worksheet */
Excel.Worksheet excelWorksheet = (Excel.Worksheet)excelSheets[1];
/* Deleting first 87 Rows */
Excel.Range range = excelWorksheet.get_Range("1:87").EntireRow;
range.Delete(Excel.XlDeleteShiftDirection.xlShiftUp);
/* Save File */
excelWorkbook.SaveAs(@"out_file.xlsm");
excelWorkbook.Close(false);
excelApp.Application.Quit();
/* Release COM objects otherwise Excel remain running */
releaseObject(range);
releaseObject(excelWorkbook);
releaseObject(excelWorksheet);
releaseObject(excelApp);
これは .xlsx 拡張子で機能します (行を削除して別の名前で保存します) が、.xlsm では機能しません (プログラムは正常に実行されますが、データは削除されません)。手動でExcelファイルを.xlsxとして保存し、そのファイルでプログラムを実行しても機能しませんが、貼り付けデータを別の.xlsxに手動でコピーしてそのファイルでプログラムを実行すると、機能しません。このプログラムを書き直して、.xlsm ファイルから行を削除するにはどうすればよいですか? 助けてください、ありがとう。