Экспорт в .xlsx с помощью Microsoft.Office.Interop.Excel SaveAs Ошибка

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

Exception from 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);
35
задан ZygD 9 July 2015 в 07:24
поделиться