Exportar para .xlsx usando o Microsoft.Office.Interop.Excel SaveAs Error
Estou no processo de escrever um módulo para exportar uma DataTable para Excel usandoMicrosoft.Office.Interop.Excel
mas antes de começar a sério, quero que o básico funcione: abra o arquivo, salve como e fech
Consegui abrir e salvar um arquivo com a extensão .xls, mas salvar com a extensão .xlsx não funciona. Ele grava o arquivo .xlsx, mas quando tento abri-lo, recebo o seguinte erro:
Excel não pode abrir o arquivo 'SomeFile.xlsx' porque o formato do arquivo não é válido. Verifique se o arquivo não foi corrompido e se a extensão corresponde ao formato do arquivo.
O código usado para abrir, salvar e fechar os arquivos é:
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);
Eu também tentei o formato do arquivoExcel.XlFileFormat.xlExcel12
no lugar deExcel.XlFileFormat.xlWorkbookNormal
mas isso nem escreve, ao invés disso, lança a COMException:
Exceção de HRESULT: 0x800A03EC
Qualquer ajuda para resolver isso seria muito apreciad
Edit: Agora eu também tentei:
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);