我有 C# 应用程序,用于从 excel 中删除前几行,然后将文件格式化为 .csv,但现在我得到的不是 .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 文件中删除行?请帮忙,谢谢。