Frage an openxml, oledb, c# – OLE DB vs OPEN XML SDK vs Excel.interop

11

Ich muss XLSX-Dateien lesen und eine maximale Menge an Inhalten daraus extrahieren. Welche der APIs soll ich verwenden?

OLE DB, Open XML SDK oder Excel Interop?

Welches ist am einfachsten zu bedienen?Können Sie alle Informationen mit dem einen oder anderen abrufen? das heißt, Datum, Uhrzeit, verbundene Zellen, Tabellen, schwenkbare Elemente usw.
Open XML SDK wäre anfangs nicht so einfach, aber das Gute ist, dass es solide Open-Source-Bibliotheken gibt, die die Aufgaben trivial machen. Mein Rat ist, wenn es Ihnen nichts ausmacht, DLLs von Drittanbietern zu verwenden, dann ist Open XML der richtige Weg. Zwei ausgezeichnete Bibliotheken, die ich vorschlagen kann, sind ClosedXML und EPPlus. Sie können sofort mit Linq abfragen, was cool ist. nawfal

Deine Antwort

1   die antwort
17

Sie können alle ausprobieren und die auswählen, die am besten zu Ihnen passt ...

Abhängig von den Daten, die Sie lesen möchten, empfehlen wir Ihnen, Open XML über Interop oder Ole DB zu verwenden.
Ich kenne kein offenes XML-SDK, obwohl ich mit etwas Erfahrung habeEPPlus Bibliothek, die ich viel benutze und nur gute Worte dazu sagen kann - es ist schnell, einfach zu erlernen, mit guten Beispielen. Die Bibliothek basiert auf dem Open Office XML-Format. Ich nehme also an, dass es dem SDK, das Sie erwähnt haben, ziemlich ähnlich ist und in der Lage ist, Excel 2007- und 2010-Dateien einfach zu lesen und zu schreiben.
Im verlinkten Web finden Sie eine Bibliothek selbst, Dokumentation und einige Beispiele für "Hello World" -Projekte zum Herunterladen.

Warum diese Bibliothek überhaupt? Denn damit können Sie nicht nur Zellenwerte lesen, sondern auch deren Farben, Schriften, Breiten und Höhen, das Zusammenführen und all die detaillierten Dinge, die Sie nicht nur lesen, sondern auch ändern können. Dazu muss Excel nicht installiert sein.

Auf dem zweiten Platz - nur für den Fall, dass Sie extrahieren müssenTabellendaten vom Arbeitsblatt - Sie können mit OLE DB spielen. Ich befürchte, dass Sie keine Informationen über Formate, Farben usw. extrahieren können, und dass die Daten in einem tabellarisch organisierten Arbeitsblatt vorliegen müssen, damit Sie sie als Datenbanktabelle behandeln können.

Der letzte ist Interop, weil:
- Es handelt sich um eine COM-Bibliothek, daher müssen Sie beim Spielen über .NET sehr vorsichtig sein, da es leicht zu hässlichen und schwer auffindbaren Speicherlecks kommt (bestätigt durch meine schlechte Erfahrung). - Wenn Sie ihre Objekte nicht entsorgen richtig, es lässt den Excel.exe-Prozess geöffnet,
- es ist viel langsamer als frühere Methoden,
- Im Grunde hat es fast keinen Mehrwert mehr als eine der vorherigen Methoden (EPPlus oder OleDB) und erfordert die Installation von Excel auf dem Client-Computer. Warum also?

Viel Glück dann.

Sehr umfassende Antwort, danke. Ich habe das openxml-SDK getestet, und ich muss sagen, es erfordert einige Boilerplate-Code. Werfen wir einen Blick auf die EVP. cecemel
Microsoft selbst empfiehlt die Verwendung von Interop for Server Deployment nicht Ives
Ein Grund, sich für COM zu entscheiden, wird die umfassende API von Microsoft sein. Auch wenn Bibliotheken von Drittanbietern den Anwendungsfall von 99 PC-Entwicklern abdecken müssen, sind sie möglicherweise noch nicht vollständig. Gute Antwort +1. Ich mag die Open XML Option hier am meisten. Nur traurig, dass du eine Menge Boilerplate schreiben musst. nawfal

Verwandte Fragen