Pregunta

Tengo una carga de tablas de datos que desea exportar en varias hojas de cálculo Excel (en un nuevo archivo / hoja de cálculo Excel). La "solución" que ya existe en el código que tengo es dos bucles anidados for, interactuando sobre todas las filas y columnas, la inserción de celda por celda de datos. Esto no es ideal ya que el proceso tarda más de 10 minutos. Hay una buena cantidad de datos que la hoja de cálculo resultante es 8.5MB, pero seguramente debe haber una manera más rápida?

Estoy usando las bibliotecas Oficina de interoperabilidad para hacer esto; Creo recordar haber en alguna parte que puede importar CSV con estas leyendo. Si este es el caso, ¿sería más rápido para convertir las tablas de datos en CSV y luego importar esto en Excel, y si es así, ¿cómo?

¿Fue útil?

Solución

Su mejor apuesta es probablemente para acelerar las cosas mediante el uso de la incubadora propiedad Value del objeto Range. Se acepta una matriz, que funciona mucho más rápido que el establecimiento de cada célula individual. Se puede ver una muestra de esto en http://support.microsoft.com/kb/302096.

Otros consejos

SpreadsheetGear para .NET tiene una API similar a Excel, pero caerá de su tiempo de 10 minutos más a unos segundos (en realidad, la generación de un libro de 8.5MB típicamente tomar <1 segundo en un servidor moderno). SpreadsheetGear también incluye un método IRange.CopyFromDataTable que podría funcionar para usted.

Puede ver muestras en vivo ASP.NET (C # y VB) aquí y descarga la evaluación aquí .

exención de responsabilidad: Soy dueño de SpreadsheetGear LLC

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top