En una de nuestras aplicaciones ASP.NET en C #, tomamos una cierta recopilación de datos (colección SubSonic) y la exportamos a Excel. También queremos importar archivos de Excel en un formato específico. Estoy buscando una biblioteca que pueda usar para este propósito.
Requisitos:
- Archivos de Excel 2007 (¿Excel 2003 admite más de 64k filas? Necesito más que eso).
- No requiere Excel en el servidor
- Toma una colección escrita y, si puede, intenta poner campos numéricos como numéricos en Excel.
- Funciona bien con archivos grandes (100k a 10M), lo suficientemente rápido.
- ¡No se bloquea al exportar GUID!
- No cuesta una gran cantidad de dinero (no hay una biblioteca empresarial como Aspose). Gratis siempre es genial, pero puede ser una biblioteca comercial.
¿Qué biblioteca me recomiendan? ¿Lo ha usado para grandes cantidades de datos? ¿Hay otras soluciones?
En este momento, estoy usando una herramienta simple que genera HTML que Excel carga más adelante, pero estoy perdiendo algunas capacidades, además Excel se queja cuando lo cargamos. No necesito generar gráficos ni nada de eso, solo exportar datos en bruto.
Estoy pensando en archivos CSV planos, pero Excel es un requisito del cliente. Puedo trabajar con CSV directamente, si tuviera una herramienta para convertir ay desde Excel. Dado que Excel 2007 es un formato de archivo basado en xml (y comprimido), supongo que este tipo de biblioteca debería ser fácil de encontrar. Sin embargo, lo que más me importa son sus comentarios y opiniones.
EDITAR: Irónicamente, en mi opinión y siguiendo la respuesta con la mayoría de los votos, la mejor biblioteca de importación y exportación de Excel no es exportar en absoluto. Este no es el caso para todos los escenarios, pero es para el mío. Los archivos XLS solo admiten 64k filas. XLSX admite hasta 1M. Las bibliotecas gratuitas que he probado presentan un mal rendimiento (un segundo para cargar una fila cuando tienes 200k filas). No he probado los pagos, ya que creo que son demasiado caros por el valor que ofrecen cuando todo lo que necesita es una rápida rutina de conversión XLSX <-> CSV.
fuente
Respuestas:
Voy a echar mi mano en busca de archivos csv planos, aunque solo sea porque tienes el mayor control sobre el código. Solo asegúrate de leer en las filas y procesarlas de una en una (leer el documento hasta el final y dividirlo consumirá toda tu memoria, lo mismo que escribir, transmitirlo).
Sí, el usuario tendrá que guardar como CSV en Excel antes de que pueda procesarlo, pero ¿tal vez esta limitación pueda superarse entrenando y proporcionando instrucciones claras en la página?
Finalmente, cuando exporta al cliente, si establece el tipo MIME en text / csv, Excel generalmente se asigna a ese tipo, por lo que el usuario parece ser 'un archivo Excel'.
fuente
Descubrí el Open XML SDK desde mi respuesta original. Proporciona clases fuertemente tipadas para objetos de hoja de cálculo, entre otras cosas, y parece ser bastante fácil de trabajar. Lo voy a usar para informes en uno de mis proyectos. Lamentablemente, se supone que la versión 2.0 no se lanzará hasta finales de 2009 o 2010.
fuente
la nueva versión de ExcelPackage está aquí http://EPPlus.codeplex.com
Todavía estoy luchando con la función de exportación a Excel, ya que mi aplicación debería exportar algunos datos a Excel-Template 2007
Este proyecto me parece bien, y el desarrollador es muy sensible a los errores y problemas.
fuente
¡He estado usando ClosedXML y funciona muy bien!
fuente
SpreadsheetGear para .NET lee y escribe CSV / XLS / XLSX y hace más.
Puede ver ejemplos de ASP.NET en vivo con código fuente C # y VB aquí y descargar una versión de prueba gratuita aquí .
Por supuesto, creo que SpreadsheetGear es la mejor biblioteca para importar / exportar libros de Excel en ASP.NET, pero soy parcial. Puede ver lo que dicen algunos de nuestros clientes en el lado derecho de esta página .
Descargo de responsabilidad: soy dueño de SpreadsheetGear LLC
fuente
NPOI para Excel 2003 de código abierto http://www.leniel.net/2009/07/creating-excel-spreadsheets-xls-xlsx-c.html
fuente
He usado Flexcel en el pasado y fue genial. Pero esto fue más para crear y actualizar mediante programación hojas de trabajo de Excel.
fuente
La exportación de CSV es simple, fácil de implementar y rápida. Sin embargo, hay un problema potencial que vale la pena señalar. Excel (hasta 2007) no conserva los ceros a la izquierda en los archivos CSV. Esto confundirá códigos postales, identificadores de productos y otros datos textuales que contengan valores numéricos. Hay un truco que hará que Excel importe los valores correctamente (usando delimitadores y valores de prefijo con el signo =, si no recuerdo mal, por ejemplo, .., = "02052", ...). Si tiene usuarios que realizarán tareas de procesamiento posterior con el CSV, deben tener en cuenta que deben cambiar el formato a XLS y no guardar el archivo nuevamente en CSV. Si lo hacen, los ceros iniciales se perderán para siempre.
fuente
Durante años, he usado JExcel para esto, un excelente proyecto Java de código abierto. También era compatible con .NET al usar J # para compilarlo, y también he tenido un gran éxito con él en esta encarnación. Sin embargo, recientemente necesitaba migrar el código a .NET nativo para admitir una aplicación IIS de 64 bits en la que creo una salida de Excel. La versión J # de 32 bits no se cargaría.
El código para CSharpJExcel es LGPL y está disponible actualmente en esta página, mientras nos preparamos para implementarlo en el sitio de JExcel SourceForge. Se compilará con VS2005 o VS2008. Los ejemplos en la documentación original de JExcel se moverán bastante intactos a la versión .NET.
Espero que sea útil para alguien aquí afuera.
fuente
He trabajado con Excel Jetcell durante mucho tiempo y realmente puedo recomendarlo. http://www.devtriogroup.com/exceljetcell
fuente
El siguiente sitio muestra cómo exportar un DataTable, DataSet o List <> a un archivo .xlsx Excel 2007 "adecuado" (en lugar de exportar un archivo .csv y hacer que Excel lo abra).
Utiliza las bibliotecas OpenXML, por lo que no necesita tener Excel instalado en su servidor.
Mikes Knowledge Base - ExportToExcel
Todo el código fuente se proporciona, de forma gratuita , así como una aplicación de demostración.
Es muy fácil agregar a sus propias aplicaciones, solo necesita llamar a una función, pasar un nombre de archivo de Excel y su fuente de datos:
Espero que esto ayude.
fuente
Verifique el proyecto ExcelPackage , utiliza el formato de archivo Office Open XML de Excel 2007, es liviano y de código abierto ...
fuente
He intentado CSharpJExcel y no lo recomendaría, al menos no hasta que haya alguna documentación disponible. Contrariamente a los desarrolladores comenta que es no un puerto nativo recta.
fuente
Sé que esto es bastante tarde, pero me siento obligado a responder xPorter (escritura) y xlReader (lectura) desde xPortTools.Net . Probamos bastantes bibliotecas y nada se acercó en términos de rendimiento (estoy hablando de escribir millones de filas en segundos aquí). ¡No puedo decir lo suficiente sobre estos productos!
fuente
Puedes usar
Microsoft.Jet.OLEDB.4.0
fuente
Acabamos de identificar una necesidad similar. Y creo que es importante tener en cuenta la experiencia del usuario.
Casi nos desviamos de la misma manera:
... flujo de trabajo
Add-in Express le permite crear un botón dentro de Excel sin todo ese trabajo tedioso con VSTO. Entonces el flujo de trabajo se convierte en:
Haga que el código detrás del botón use la API de Excel "nativa" (a través de Add-in Express) y empuje directamente al sistema del destinatario. No puede ser mucho más transparente para el desarrollador o el usuario. Vale la pena considerarlo.
fuente
Hay un muy buen artículo y biblioteca en CodeProject por Yogesh Jagota:
Biblioteca Excel Excel Import-Export
Lo he usado para exportar datos de consultas SQL y otras fuentes de datos a Excel, funciona bien para mí.
Salud
fuente
Puede probar la siguiente biblioteca, es bastante fácil y es solo una envoltura ligera sobre el SDK Open XML de Microsoft (incluso puede reutilizar el formato, los estilos e incluso hojas de trabajo completas del archivo secundario de Excel): http://officehelper.codeplex.com
fuente
Spreadsheetgear es la mejor biblioteca comercial que hemos encontrado y estamos usando. Nuestra empresa realiza una gran cantidad de importación y exportación avanzadas de Excel y Spreadsheetgear admite muchas funciones avanzadas de Excel mucho más allá de cualquier cosa que pueda hacer con CSV simple, y es rápido. Sin embargo, no es gratuito ni muy barato, pero vale la pena porque el soporte es excelente. Los desarrolladores realmente te responderán si te encuentras con un problema.
fuente
¿Qué tal la biblioteca apache POI java? No lo he usado para Excel, pero lo hice para Word 2007.
fuente