Pregunta

Necesito acceder a libros de Excel desde .Net.Conozco todas las diferentes formas de hacerlo (las he escrito en un entrada en el blog), y sé que usar un componente .Net nativo será lo más rápido.Pero la pregunta es ¿cuál de los componentes gana?¿Alguien los ha evaluado?He estado usando Syncfusion XlsIO, pero es muy lento para algunas operaciones clave (como eliminar filas en un libro que contiene miles de rangos con nombre).

¿Fue útil?

Solución

No he realizado ninguna evaluación comparativa adecuada, pero probé varios otros componentes y descubrí que Hoja de cálculoEngranaje Fue considerablemente más rápido que XlsIO que estaba usando antes.He escrito algunos de mis hallazgos en este correo

Otros consejos

No puedo ayudarlo con su pregunta original, pero ¿sabe que puede acceder a archivos de Excel utilizando OleDbConnection y, por lo tanto, tratarlos como una base de datos?Luego puede leer hojas de trabajo en una tabla de datos, realizar todos los cambios que necesita en los datos de su aplicación y luego guardarlos todos en el archivo usando OleDbConnection.

Sí, pero no voy a publicarlos a ambos por cortesía de Syncfusion (te piden que no publiques puntos de referencia), porque no soy un evaluador experimentado, por lo que mis pruebas probablemente sean algo defectuosas, pero principalmente porque lo que realmente haces el punto de referencia es una gran diferencia en cuanto a quién gana y por cuánto.

Tomé uno de sus ejemplos de "rendimiento" y agregué la misma rutina en EPPlus para compararlos.XLSIO era alrededor de un 15% más rápido con solo inserciones sencillas, dependiendo de la proporción fila/columna (probé algunas), el uso de memoria parecía muy similar.Cuando agregué una rutina que, después de agregar todas las filas, eliminaba cada décima fila y luego insertaba una nueva fila 2 filas más arriba, XLSIO fue significativamente más lento en esa circunstancia.

Un punto de referencia genérico es prácticamente inútil para usted.Debes probarlos entre sí en los escenarios específicos que utilices.

He estado usando EPPlus durante algunos años y el rendimiento ha sido bueno, no recuerdo haberle gritado.

Más digno de su consideración es la funcionalidad, el soporte (en mi experiencia, Syncfusion ha sido bueno), la documentación, el acceso al código fuente si eso es importante y, lo que es más importante, cuánto sentido tiene la API para usted, la sintaxis puede ser bastante diferente.p.ej.Estilos con nombre

XLSIO

headerStyle.BeginUpdate();
workbook.SetPaletteColor(8, System.Drawing.Color.FromArgb(255, 174, 33));
headerStyle.Color = System.Drawing.Color.FromArgb(255, 174, 33);
headerStyle.Font.Bold = true;
headerStyle.Borders[ExcelBordersIndex.EdgeLeft]  .LineStyle = ExcelLineStyle.Thin;
headerStyle.Borders[ExcelBordersIndex.EdgeRight] .LineStyle = ExcelLineStyle.Thin;
headerStyle.Borders[ExcelBordersIndex.EdgeTop]   .LineStyle = ExcelLineStyle.Thin;
headerStyle.Borders[ExcelBordersIndex.EdgeBottom].LineStyle = ExcelLineStyle.Thin;
headerStyle.EndUpdate();

EPPlus

ExcelNamedStyleXml headerStyle = xlPackage.Workbook.Styles.CreateNamedStyle("HeaderStyle");
headerStyle.Style.Fill.PatternType = ExcelFillStyle.Solid; // <== needed or BackgroundColor throws an exception
headerStyle.Style.Fill.BackgroundColor.SetColor(System.Drawing.Color.FromArgb(255, 174, 33));
headerStyle.Style.Font.Bold = true;
headerStyle.Style.Border.Left.Style   = ExcelBorderStyle.Thin;
headerStyle.Style.Border.Right.Style  = ExcelBorderStyle.Thin;
headerStyle.Style.Border.Top.Style    = ExcelBorderStyle.Thin;
headerStyle.Style.Border.Bottom.Style = ExcelBorderStyle.Thin;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top