Estoy exportando una matriz de 1200 X 800 (matriz de índices) a un archivo de Excel utilizando el estándar Microsoft.Office.Interop.Excel. La aplicación funciona, solo que es realmente muy lenta (incluso para la matriz de 100 x 100). También exporto en un archivo de texto a través de un TextWriter y funciona casi al instante. ¿Hay alguna manera de exportar al archivo Excel más rápido?Microsoft.Office.Interop.Excel realmente lento
Aquí está mi código:
Excel.Application xlApp=new Excel.Application();
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
//xlApp = new Excel.ApplicationClass();
xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
for (int i = 0; i < 800; i++) //h
for (int j = 0; j < 1200; j++)
xlWorkSheet.Cells[i+1,j+1] =indexMatrix[i][j];
xlWorkBook.SaveAs("C:\\a.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
xlWorkBook.Close(true, misValue, misValue);
xlApp.Quit();
releaseObject(xlWorkSheet);
releaseObject(xlWorkBook);
releaseObject(xlApp);
MessageBox.Show("Excel file created , you can find the file c:\\csharp-Excel.xls");
parece haber un problema en .get_Resize. Parece que no existe. – Alex
en la línea excel.range, aparece el siguiente error '' System .__ ComObject 'no contiene una definición para' get_Resize '' – Alex
Creo que la edición lo arreglará. Las celdas [1,1] no devuelven un objeto Range, por lo que deben emitirse. – Joe