を使用してDataTableをExcelにエクスポートするモジュールを作成中ですがMicrosoft.Office.Interop.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);