【发布时间】:2012-04-03 21:51:33
【问题描述】:
我正在编写一个模块以使用 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 异常: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);
【问题讨论】:
-
你的机器上安装了什么版本的Excel?
标签: c# excel winforms-interop