我正在编写一个使用 Microsoft.Office.Interop.Excel
导出 DataTable 到 Excel 的模块,但在正式开始之前,我想先让基本操作起作用:打开文件、另存为和关闭文件。
我已经成功地以 .xls 扩展名打开并保存了文件,但是以 .xlsx 扩展名保存不起作用。它会生成 .xlsx 文件,但当我尝试打开它时,会出现以下错误:
Excel 无法打开文件“SomeFile.xlsx”,因为文件格式无效。请验证该文件未被损坏,并且文件扩展名匹配文件格式。
我用于打开、保存和关闭文件的代码如下:
Excel.Application excelApplication = new Excel.Application();
//excelApplication.Visible = true;
//dynamic excelWorkBook = excelApplication.Workbooks.Add();
Excel.Workbook excelWorkBook = excelApplication.Workbooks.Add();
//Excel.Worksheet wkSheetData = excelWorkBook.ActiveSheet;
int rowIndex = 1; int colIndex = 1;
excelApplication.Cells[rowIndex, colIndex] = "TextField";
// This works.
excelWorkBook.SaveAs("C:\\MyExcelTestTest.xls", Excel.XlFileFormat.xlWorkbookNormal,
System.Reflection.Missing.Value, System.Reflection.Missing.Value, false, false,
Excel.XlSaveAsAccessMode.xlShared, false, false, System.Reflection.Missing.Value,
System.Reflection.Missing.Value, System.Reflection.Missing.Value);
// This does not!?
excelWorkBook.SaveAs("C:\\MyExcelTestTest.xlsx", Excel.XlFileFormat.xlWorkbookNormal,
System.Reflection.Missing.Value, System.Reflection.Missing.Value, false, false,
Excel.XlSaveAsAccessMode.xlShared, false, false, System.Reflection.Missing.Value,
System.Reflection.Missing.Value, System.Reflection.Missing.Value);
excelWorkBook.Close(Missing.Value, Missing.Value, Missing.Value);
我还尝试使用Excel.XlFileFormat.xlExcel12
文件格式替换Excel.XlFileFormat.xlWorkbookNormal
,但这样并没有写入成功,反而抛出了COMException异常:
HRESULT Exception: 0x800A03EC
非常感谢任何能够帮助解决这个问题的帮助。
编辑:我现在也尝试过:
excelWorkBook.SaveAs("C:\\MyExcelTestTest", Excel.XlFileFormat.xlExcel12,
System.Reflection.Missing.Value, System.Reflection.Missing.Value, false, false,
Excel.XlSaveAsAccessMode.xlShared, false, false, System.Reflection.Missing.Value,
System.Reflection.Missing.Value, System.Reflection.Missing.Value);