Necesito acceder a los libros de Excel desde .Net. Sé todo sobre las diferentes formas de hacerlo (las he escrito en un blog post), y sé que usar un componente .Net nativo será el más rápido. Pero la pregunta es, ¿cuál de los componentes gana? Alguien los ha comparado? He estado usando Syncfusion XlsIO, pero eso es muy lento para algunas operaciones clave (como eliminar filas en un libro que contiene miles de rangos con nombre).¿Alguien tiene puntos de referencia de componentes .NET Excel IO?
Respuesta
No he hecho ningún punto de referencia adecuado, pero probé varios otros componentes y descubrí que SpreadsheetGear era considerablemente más rápido que XlsIO que antes. He escrito algunos de mis hallazgos en este post
No puedo ayudarle con su pregunta original, pero ¿sabe que puede acceder a los archivos de Excel utilizando una OleDbConnection y, por lo tanto, tratarla como una base de datos? A continuación, puede leer las hojas de trabajo en una tabla de datos, realizar todos los cambios que necesita a los datos en su aplicación, y luego guardar todo de nuevo en el archivo usando un OleDbConnection.
Sí, pero no los voy a publicar por cortesía de Syncfusion (le piden que no publique puntos de referencia), porque no soy un experimentado Probador, por lo que mis pruebas probablemente son un poco defectuosas, pero sobre todo porque lo que realmente comparas hace una gran diferencia entre quién gana y cuánto.
Tomé uno de sus ejemplos de "rendimiento" y agregué la misma rutina en EPPlus para compararlos. XLSIO fue aproximadamente un 15% más rápido con insertos sencillos, dependiendo de la relació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, borré cada 10ma fila y luego inserté una nueva fila 2 filas arriba de eso - XLSIO fue significativamente más lento en esa circunstancia.
Un punto de referencia genérico es bastante inútil para usted. Debes probarlos uno contra el otro en los escenarios específicos que usas.
He estado usando EPPlus durante algunos años y el rendimiento ha sido bueno, no recuerdo haberlo gritado.
Más digna de su consideración es la funcionalidad, el soporte (Syncfusion ha sido bueno, según mi experiencia), la documentación, el acceso al código fuente si eso es importante y, lo que es más importante, qué 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;
- 1. ¿Alguien tiene una referencia rápida de símbolos ERD?
- 2. Interpolación de puntos de datos en Excel
- 3. Archivo asíncrono IO en .Net
- 4. ¿Alguien trabaja con Puntos de función?
- 5. ¿Alguien sabe de buenos componentes de acoplamiento Delphi?
- 6. Consola avanzada IO en .NET
- 7. ¿Hay buenos puntos de referencia de Clojure?
- 8. ¿Por qué Scala no tiene una Monad de IO?
- 9. Acceso a componentes .NET de Powershell
- 10. ¿Alguien tiene una hoja de trucos de Python 3
- 11. ¿Alguien usa .NET System.IO.IsolatedStorage?
- 12. ¿Alguien está utilizando con éxito el COM sin registro con componentes .NET?
- 13. ¿Alguien tiene experiencia con AppScale?
- 14. IAudioSessionNotification, ¿Alguien tiene código de trabajo?
- 15. ¿Alguien tiene experiencia con Perl5i?
- 16. ¿Alguien tiene experiencia con ZFS?
- 17. ¿Alguien tiene alguna experiencia con math.net
- 18. ¿Cómo crear código comprobable usando clases de IO de .Net?
- 19. ¿.NET tiene un enlazador?
- 20. ¿Alguien tiene experiencia lenta con VS2010?
- 21. ¿Por qué .NET no tiene una referencia suave sino también una referencia débil, como Java?
- 22. ¿Cómo utiliza .NET los subprocesos IO o los puertos de terminación IO?
- 23. Excel VBA Signos de libra y de dos puntos ¿Significado?
- 24. ¿Alguien escribe aplicaciones de escritorio con .NET?
- 25. ¿Alguien tiene experiencia con ServiceStack u otro framework de servicios .Net?
- 26. Cuál es la diferencia entre los componentes .NET y los componentes COM
- 27. ¿Alguien usa membresía ASP .NET?
- 28. ¿Java tiene un equivalente de referencia constante?
- 29. animaciones y rendimiento de CSS3: ¿hay puntos de referencia?
- 30. ¿Tiene .NET colecciones de iconos?
Paul, Gracias. Era consciente de eso (quizás debería incluirlo en mi blog). Sin embargo, en este caso, no son los datos que realmente necesito. Son cosas como el estilo de celda y el formateo, etc. Sam –