c# asp.net excel export-to-excel import-from-excel

closedxml c#



Importar y Exportar Excel-¿Cuál es la mejor biblioteca? (20)

¡He estado usando ClosedXML y funciona genial!

ClosedXML facilita a los desarrolladores la creación de archivos de Excel 2007/2010. Proporciona una buena forma orientada a objetos para manipular los archivos (similar a VBA) sin tener que lidiar con las molestias de los documentos XML. Puede ser utilizado por cualquier lenguaje .NET como C # y Visual Basic (VB).

En una de nuestras aplicaciones ASP.NET en C #, tomamos una cierta colecció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 (¿Soporta Excel 2003 más de 64k filas? Necesito más que eso).
  • No requiere Excel en el servidor
  • Toma una colección tipada y, si puede, intenta colocar campos numéricos como numéricos en Excel.
  • Funciona bien con archivos grandes (100k a 10M) - lo suficientemente rápido.
  • ¡No se cuelga 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 recomiendas? ¿Lo has usado para grandes cantidades de datos? ¿Hay otras soluciones?

En este momento, estoy usando una herramienta sencilla que genera código HTML que es cargado por Excel más adelante, pero estoy perdiendo algunas capacidades, y Excel se queja cuando lo cargamos. No necesito generar gráficos ni nada de eso, solo exportar datos sin formato.

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 tus 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 exporta 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 lo único que necesita es una rápida rutina de conversión XLSX <-> CSV.


¿Qué tal la biblioteca de Java POI de apache? No lo he usado para Excel, pero lo usé para Word 2007.


Acabamos de identificar una necesidad similar. Y creo que es importante considerar la experiencia del usuario.

Casi nos desviamos del camino:

  1. Preparar / trabajar en archivo de hoja de cálculo
  2. Guardar el archivo
  3. Importar archivo
  4. Trabajar con datos en el sistema

... flujo de trabajo

Add-in Express le permite crear un botón dentro de Excel sin tener que lidiar con todo eso con VSTO. Entonces el flujo de trabajo se convierte en:

  1. Preparar / trabajar en archivo de hoja de cálculo
  2. Importar archivo (usando el botón dentro de Excel )
  3. Trabajar con datos en el sistema

Haga que el código detrás del botón use la API de Excel "nativa" (a través de Add-in Express) y presione directamente en el sistema del destinatario. No puede ser mucho más transparente para el desarrollador o el usuario. Vale la pena considerarlo.


Compruebe el proyecto ExcelPackage , utiliza el formato de archivo Office Open XML de Excel 2007, es liviano y de código abierto ...


Descubrí el Open XML SDK desde mi respuesta original. Proporciona clases fuertemente tipadas para objetos de hojas de cálculo, entre otras cosas, y parece ser bastante fácil de usar. Voy a usarlo para informes en uno de mis proyectos. Por desgracia, se supone que la versión 2.0 no se lanzará hasta fines de 2009 o 2010.


El siguiente sitio muestra cómo exportar un DataTable, un DataSet o una Lista <> a un archivo .xlsx de 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.

Base de conocimiento de Mikes - ExportToExcel

Todo el código fuente se proporciona, de forma gratuita , así como una aplicación de demostración.

Es muy fácil de agregar a sus propias aplicaciones, solo necesita llamar a una función, pasar un nombre de archivo de Excel y su origen de datos:

DataSet ds = CreateSampleData(); string excelFilename = "C://Sample.xlsx"; CreateExcelFile.CreateExcelDocument(ds, excelFilename);

Espero que esto ayude.



He trabajado con excel jetcell durante mucho tiempo y realmente puedo recomendarlo. http://www.devtriogroup.com/exceljetcell

  • Producto comercial
  • Archivos de Excel XLS y XLSX
  • Basado en un motor propio en red pura.

He usado Flexcel en el pasado y fue genial. Pero esto fue más para crear y actualizar programáticamente hojas de trabajo de Excel.


Intenté CSharpJExcel y no lo recomendaría, al menos no hasta que haya documentación disponible. Contrariamente a los comentarios de los desarrolladores, no es un puerto nativo directo.



Podrías probar la siguiente biblioteca, es bastante fácil y es solo una capa ligera sobre Open XML SDK de Microsoft (incluso puedes reutilizar el formato, los estilos e incluso hojas de trabajo enteras del archivo Excel secundario): http://officehelper.codeplex.com


Puede usar Microsoft.Jet.OLEDB.4.0


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 el camino del rendimiento (estoy hablando de escribir millones de filas en segundos aquí). No puedo decir suficientes cosas buenas sobre estos productos!


Spreadsheetgear es la mejor biblioteca comercial que hemos encontrado y estamos usando. Nuestra compañía hace una gran cantidad de excel de importación y exportación avanzada y Spreadsheetgear admite muchas características avanzadas de Excel, más allá de cualquier cosa que pueda hacer con CSV simple, y es rápido. No es gratis o muy barato, pero vale la pena porque la ayuda es excelente. Los desarrolladores realmente le responderán si se encuentra con un problema.


Voy a lanzar mi mano para 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 a una por vez (leer el documento hasta el final y dividirlo consumirá toda tu memoria, lo mismo que con la escritura y la transmisión).

Sí, el usuario deberá guardar, como CSV en Excel, antes de poder procesarlo, pero tal vez esta limitación se pueda superar 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 para que el usuario lo vea como ''un archivo Excel''.


la nueva versión de ExcelPackage está aquí http://EPPlus.codeplex.com

Todavía estoy peleando con la función de exportar 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.


SpreadsheetGear for .NET lee y escribe CSV / XLS / XLSX y hace más.

Puede ver ejemplos de ASP.NET en vivo con el código fuente de C # y VB here y descargar una versión de prueba gratuita here .

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


Durante años, he usado JExcel para esto, un excelente proyecto de código abierto de Java. También fue .NET-able usando J # para compilarlo, y también he tenido un gran éxito en esta encarnación. Sin embargo, recientemente necesité migrar el código a .NET nativo para admitir una aplicación IIS de 64 bits en la que creo 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 this página, mientras nos preparamos para implementarlo en el sitio JExcel SourceForge. Se compilará con VS2005 o VS2008. Los ejemplos en la documentación original de JExcel pasarán intactos a la versión de .NET.

Espero que sea útil para alguien aquí.


La exportación de CSV es simple, fácil de implementar y rápida. Sin embargo, hay un problema potencial que vale la pena mencionar. Excel (hasta 2007) no conserva los ceros a la izquierda en los archivos CSV. Esto desdibujará los códigos postales, los 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 posprocesamiento con CSV, deben tener en cuenta que deben cambiar el formato a XLS y no guardar el archivo en CSV. Si lo hacen, los ceros iniciales se perderán para siempre.