Frage

Ich bin benötigen, um Zugriff auf Excel-Arbeitsmappen aus .Net.Ich weiß alles über die verschiedenen Möglichkeiten, es zu tun (ich geschrieben habe, Sie in eine blog post), und ich weiß, dass die Verwendung eines nativen .Net-Komponente ist die Schnellste.Aber die Frage ist, welche der Komponenten gewinnt?Hat jemand benchmarked Sie?Ich habe mit Syncfusion XlsIO, aber es ist sehr langsam für einige wichtige Operationen (wie das löschen von Zeilen in einer Tabelle mit tausenden von Benannten Bereichen).

War es hilfreich?

Lösung

Ich bin noch nicht ordnungsgemäße benchmarks, aber ich versuchte es mit mehreren anderen Komponenten,und gefunden, dass SpreadsheetGear erheblich schneller als XlsIO, die ich war mit, bevor Sie.Die ich geschrieben habe, einige meiner Erkenntnisse in dieser post

Andere Tipps

Kann nicht helfen, Sie mit Ihrer ursprünglichen Frage, aber sind Sie sich bewusst, dass Sie Zugriff auf Excel-Dateien mit einer OleDbConnection, und deshalb behandeln Sie es als eine Datenbank?Sie können dann Lesen Arbeitsblätter in eine DataTable, führen Sie alle änderungen, die Sie benötigen, um die Daten in Ihrer Anwendung, und speichern Sie es zurück zu Sie die Datei mithilfe eines OleDbConnection.

Ja, aber ich werde nicht, Sie zu veröffentlichen beide aus Höflichkeit Syncfusion (Sie Fragen, Sie nicht zu veröffentlichen benchmarks), weil ich bin kein erfahrener tester so meine tests sind wohl etwas mangelhaft, aber vor allem, weil das, was Sie tatsächlich benchmark macht einen riesigen Unterschied, wer gewinnt, und um wie viel.

Ich nahm eine Ihrer "performance" - Beispiele und fügte hinzu, die gleiche routine in EPPlus zu vergleichen.XLSIO wurde um 15% schneller bei nur einfache Einsätze, abhängig von der Zeilen - /Spalten-Verhältnis (ich habe versucht, ein paar), die Speicherauslastung schien sehr ähnlich.Wenn ich habe eine routine, die, nachdem die Zeilen Hinzugefügt wurden, gelöscht jedem 10ten Zeile und dann einlegen einer neuen Zeile 2 Zeilen nach oben aus, dass XLSIO war deutlich langsamer der Fall.

Eine generische Benchmarking ist ziemlich viel nutzlos für Sie.Sie müssen versuchen, Sie gegeneinander in den jeweiligen Szenarien, die Sie verwenden.

Ich verwende EPPlus für ein paar Jahre, und die performance war in Ordnung, ich erinnere mich nicht, schrie es.

Mehr in Betracht, ist die Funktionalität, die Unterstützung (Syncfusion gut gewesen, in meiner Erfahrung), Dokumentation, Zugriff auf den source-code ein, wenn das wichtig ist, und - wichtiger - wie viel Sinn die API ermöglicht Ihnen, die syntax, kann sehr unterschiedlich sein.zB.Benannte Stile

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;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top