Я нахожусь в процессе написания модуля для экспорта 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);