Robuste c#-Excel-Parsing-Bibliothek

Ich suche nach einer ac#/.net-Excel-Parsing-Bibliothek, die mit Dateien umgehen kann, die von Endbenutzern hochgeladen wurden und möglicherweise Macken aufweisen

Wir verwenden derzeit ExcelDataReader , aber es hat einige gravierende Mängel beim Umgang mit Excel-Dateien aus der Wildnis.

Ich suche einen Excel-Parser, der Folgendes kann:

  1. Behandeln Sie Dateien im Speicherstrom und analysieren Sie sie in einen Netztyp
  2. In der Lage sein, mehr als 2000 Zeilen zu verarbeiten
  3. unterstützt 1900/1904 (PC/Mac) Datumsformate
  4. In der Lage sein, zumindest teilweise fehlerfrei mit verbundenen Zellen umzugehen
  5. Formelfelder zumindest teilweise fehlerfrei handhaben können
  6. In der Lage sein, zumindest bis zu einem gewissen Grad fehlerfrei mit reduzierten Spalten umzugehen

Schön zu haben:

  1. In der Lage sein, xls oder andere Formate zu öffnen
  2. Habe eine ordentliche Leistung
  3. immer noch ein aktives Projekt

Es wäre in Ordnung, wenn dies ein kostenpflichtiges Produkt wäre, aber in diesem Fall wäre es schwierig, wenn es keine Demo hätte

Vielleicht finden Sie etwas Nützliches in dieser alten Stack Overflow-Frage .

Antworten (2)

Sie können Excel selbst verwenden. Es hat ein sehr reichhaltiges Objektmodell eingebaut, das Sie über die COM-zu-.NET-Interop verwenden können.

Es gibt jedoch 2 Nachteile:

  • Sie benötigen eine Excel-Lizenz auf dem Server
  • Excel ist Single-Threaded, daher müssen Sie hochgeladene Dateien in die Warteschlange stellen und sie mit einem separaten Skript außerhalb des HTTP-Servers verarbeiten

Unabhängig davon, für welche Bibliothek Sie sich entscheiden, sollten Sie hochgeladene Dateien aus Sicherheitsgründen trotzdem in die Warteschlange stellen, sodass der zweite Nachteil kein wirkliches Problem darstellt.

Und der Vorteil ist, dass Sie durch die Verwendung von Original-Excel 100 % Kompatibilität mit hochgeladenen Arbeitsmappen haben.

Die beste Bibliothek, die unser Unternehmen verwendet hat, ist closedxml

Sie deklarieren und initialisieren das Objekt mit dem Konstruktor. Sammeln Sie Ihre Daten, fügen Sie sie in Ihre Datentabelle ein und konvertieren Sie Ihre Datentabelle in Excel. Die Leistung ist ziemlich gut. Falls Sie beispielsweise Millionen Zeilen verwenden, würde ich es vorziehen, neue Blätter hinzuzufügen, falls Excel nicht für Overflow in RAM geht. Das Beste, es ist kostenlos, Open Source.

XLWorkbook wb = new XLWorkbook();
DataTable dt = GetDataTableOrWhatever();
wb.Worksheets.Add(dt,"WorksheetName");
Könnten Sie die in der Frage genannten besonderen Anforderungen genauer erläutern? Fast jede Bibliothek kann eine neue Arbeitsmappe erstellen und ein Arbeitsblatt hinzufügen. Wie wäre es mit 1904 Datenzeiten?