webentwicklung-frage-antwort-db.com.de

Excel importieren und exportieren - Was ist die beste Bibliothek?

In einer unserer ASP.NET-Anwendungen in C # nehmen wir eine bestimmte Datensammlung (SubSonic-Sammlung) und exportieren sie nach Excel. Wir möchten auch Excel-Dateien in einem bestimmten Format importieren. Ich suche eine Bibliothek, die ich für diesen Zweck nutzen kann.

Bedarf:

  • Excel 2007-Dateien (Unterstützt Excel 2003 mehr als 64.000 Zeilen? Ich benötige mehr als das.)
  • Benötigt kein Excel auf dem Server
  • Nimmt eine typisierte Auflistung und versucht, wenn möglich, numerische Felder in Excel als numerisch zu kennzeichnen.
  • Funktioniert gut mit großen Dateien (100k bis 10M) - schnell genug.
  • Stürzt beim Exportieren von GUIDs nicht ab!
  • Kostet nicht viel Geld (keine Unternehmensbibliothek wie aspose). Free ist immer toll, kann aber eine kommerzielle Bibliothek sein.

Welche Bibliothek empfehlen Sie? Haben Sie es für große Datenmengen verwendet? Gibt es noch andere Lösungen?

Im Moment benutze ich ein einfaches Tool, das HTML generiert, das später von Excel geladen wird, aber ich verliere einige Funktionen, und Excel beklagt sich, wenn wir es laden. Ich muss keine Diagramme oder ähnliches generieren, sondern nur Rohdaten exportieren.

Ich denke an flache CSV-Dateien, aber Excel ist eine Kundenanforderung. Ich kann direkt mit CSV arbeiten, wenn ich ein Tool zum Konvertieren von und nach Excel hätte. Da Excel 2007 ein XML-basiertes (und komprimiertes) Dateiformat ist, sollte diese Art von Bibliothek meiner Meinung nach leicht zu finden sein. Am wichtigsten sind mir jedoch Ihre Kommentare und Meinungen.


EDIT: Ironischerweise ist meiner Meinung nach und nach der Antwort mit den meisten Stimmen die beste Excel-Import- und Exportbibliothek überhaupt kein Export. Dies ist nicht für alle Szenarien der Fall, aber für meine. XLS-Dateien unterstützen nur 64.000 Zeilen. XLSX unterstützt bis zu 1 MB. Die kostenlosen Bibliotheken, die ich ausprobiert habe, weisen eine schlechte Leistung auf (eine Sekunde, um eine Zeile zu laden, wenn Sie 200.000 Zeilen haben). Ich habe die bezahlten nicht ausprobiert, da ich der Meinung bin, dass sie für den Wert, den sie liefern, überteuert sind, wenn Sie lediglich eine schnelle XLSX <-> CSV-Konvertierungsroutine benötigen.

174
Jason Kealey

Ich werde meine Hand für flache CSV-Dateien einwerfen, schon allein, weil Sie die größte Kontrolle über den Code haben. Stellen Sie einfach sicher, dass Sie die Zeilen lesen und einzeln verarbeiten (das Lesen des Dokuments bis zum Ende und das Aufteilen verbrauchen Ihren gesamten Speicher - genau wie das Schreiben, streamen Sie ihn aus).

Ja, der Benutzer muss die CSV-Datei in Excel speichern, bevor Sie sie verarbeiten können. Diese Einschränkung kann jedoch möglicherweise durch Schulung und Bereitstellung klarer Anweisungen auf der Seite behoben werden.

Wenn Sie beim Exportieren an den Kunden den MIME-Typ auf "text/csv" setzen, wird Excel normalerweise diesem Typ zugeordnet, sodass der Benutzer den Eindruck hat, es handele sich um eine "Excel-Datei".

38
tsimon

Ich habe das Open XML SDK seit meiner ursprünglichen Antwort entdeckt. Es bietet unter anderem stark typisierte Klassen für Tabellenkalkulationsobjekte und scheint ziemlich einfach zu funktionieren. Ich werde es für Berichte in einem meiner Projekte verwenden. Leider soll die Version 2.0 erst Ende 2009 oder 2010 veröffentlicht werden.

40
cdonner

die neue Version von ExcelPackage ist hier http://EPPlus.codeplex.com

Ich kämpfe immer noch mit der Funktion zum Exportieren nach Excel, da meine Anwendung einige Daten nach Excel-Vorlage 2007 exportieren sollte

dieses Projekt scheint mir in Ordnung zu sein, und der Entwickler reagiert sehr auf Bugs und Probleme.

34
Mohannad Otaibi

Ich habe ClosedXML verwendet und es funktioniert großartig!

ClosedXML erleichtert Entwicklern das Erstellen von Excel 2007/2010-Dateien. Es bietet eine nette objektorientierte Möglichkeit, die Dateien (ähnlich wie bei VBA) zu bearbeiten, ohne die Probleme von XML-Dokumenten zu bewältigen. Es kann von jeder .NET-Sprache wie C # und Visual Basic (VB) verwendet werden.

17
Druid

SpreadsheetGear for .NET liest und schreibt CSV/XLS/XLSX und leistet mehr.

Sie können ASP.NET-Live-Beispiele mit C # und VB Quellcode hier anzeigen und eine kostenlose Testversion herunterladen hier .

Natürlich denke ich, dass SpreadsheetGear die beste Bibliothek zum Importieren/Exportieren von Excel-Arbeitsmappen in ASP.NET ist - aber ich bin voreingenommen. Sie können sehen, was einige unserer Kunden auf der rechten Seite von diese Seite sagen.

Haftungsausschluss: Ich besitze SpreadsheetGear LLC

14
Joe Erickson
13
stormwild

Der CSV-Export ist einfach, leicht zu implementieren und schnell. Es gibt jedoch ein potenzielles Problem, das es zu beachten gilt. In Excel (bis 2007) werden führende Nullen in CSV-Dateien nicht beibehalten. Dadurch werden Postleitzahlen, Produkt-IDs und andere Textdaten, die numerische Werte enthalten, verfälscht. Es gibt einen Trick, mit dem Excel die Werte korrekt importiert (mit Trennzeichen und Präfixwerten mit dem Zeichen =, wenn ich mich richtig erinnere, z. B. .., = "02052", ...). Wenn Sie Benutzer haben, die Nachbearbeitungsaufgaben mit der CSV ausführen, müssen diese sich darüber im Klaren sein, dass sie das Format in XLS ändern und die Datei nicht wieder in der CSV speichern müssen. Anderenfalls gehen führende Nullen endgültig verloren.

5
cdonner

Ich habe Flexcel in der Vergangenheit verwendet und es war großartig. Dies diente jedoch eher der programmgesteuerten Erstellung und Aktualisierung von Excel-Arbeitsblättern.

5
Duncan

Ich verwende dafür seit Jahren JExcel , ein exzellentes Open-Source-Projekt Java. Es war auch .NET-fähig, indem es mit J # kompiliert wurde, und ich hatte auch großen Erfolg damit in dieser Inkarnation. In letzter Zeit musste ich den Code jedoch nach nativem .NET migrieren, um eine 64-Bit-Anwendung IIS zu unterstützen, in der ich eine Excel-Ausgabe erstelle. Die 32-Bit-J # -Version wird nicht geladen.

Der Code für CSharpJExcel lautet LGPL und ist derzeit auf der Seite this verfügbar, während wir die Bereitstellung auf der JExcel SourceForge-Site vorbereiten. Es wird mit VS2005 oder VS2008 kompiliert. Die Beispiele in der ursprünglichen JExcel-Dokumentation werden ziemlich gut in die .NET-Version übergehen.

Hoffe, es ist hilfreich für jemanden hier draußen.

4
Chris Laforet

Auf der folgenden Website wird gezeigt, wie Sie eine DataTable, ein DataSet oder eine Liste <> in eine "richtige" Excel 2007-XLSX-Datei exportieren (anstatt eine CSV-Datei zu exportieren und Excel zum Öffnen zu bewegen).

Es verwendet die OpenXML-Bibliotheken, sodass Sie nicht Excel auf Ihrem Server installieren müssen.

Mikes Knowledge Base - ExportToExcel

Der gesamte Quellcode wird kostenlos sowie als Demo-Anwendung zur Verfügung gestellt.

Das Hinzufügen zu Ihren eigenen Anwendungen ist sehr einfach. Sie müssen nur eine Funktion aufrufen und einen Excel-Dateinamen sowie Ihre Datenquelle übergeben:

DataSet ds = CreateSampleData();
string excelFilename = "C:\\Sample.xlsx";
CreateExcelFile.CreateExcelDocument(ds, excelFilename);

Hoffe das hilft.

3
Mike Gledhill

Ich habe lange mit Excel jetcell gearbeitet und kann es nur empfehlen. http://www.devtriogroup.com/exceljetcell

  • Kommerzielles Produkt
  • Excel-Dateien XLS & XLSX
  • Basierend auf eigenem Motor in reinem Netz.
3
Robert Tyson

Sie können Microsoft.Jet.OLEDB.4.0

2
RG.

Überprüfen Sie das ExcelPackage Projekt, es verwendet das Office Open XML-Dateiformat von Excel 2007, es ist leicht und Open Source ...

2
CMS

Ich habe CSharpJExcel ausprobiert und würde es nicht empfehlen, zumindest nicht, bis eine Dokumentation verfügbar ist. Im Gegensatz zu den Kommentaren der Entwickler ist es nicht ein direkter nativer Port.

2
user483711

Ich weiß, dass dies ziemlich spät ist, aber ich fühle mich gezwungen, xPorter (Schreiben) und xlReader (Lesen) von xPortTools.Net zu beantworten. Wir haben eine ganze Reihe von Bibliotheken getestet und nichts kam der Leistung nahe (ich spreche davon, hier Millionen von Zeilen in Sekunden zu schreiben). Ich kann gar nicht genug Gutes über diese Produkte sagen!

2
DanP

Wir haben gerade einen ähnlichen Bedarf festgestellt. Und ich denke, es ist wichtig, die Benutzererfahrung zu berücksichtigen.

Wir haben uns fast auf die gleiche Weise abgelenkt:

  1. Tabellenkalkulationsdatei vorbereiten/bearbeiten
  2. Datei speichern
  3. Datei importieren
  4. Arbeiten Sie mit Daten im System

... Arbeitsablauf

Add-In Express ermöglicht es Ihnen, eine Schaltfläche in Excel zu erstellen, ohne sich mit VSTO langweilen zu müssen. Dann wird der Workflow:

  1. Tabellenkalkulationsdatei vorbereiten/bearbeiten
  2. Datei importieren (mit der Schaltfläche in Excel )
  3. Arbeiten Sie mit Daten im System

Lassen Sie den Code hinter der Schaltfläche die "native" Excel-API (über Add-In Express) verwenden und direkt in das Empfängersystem übertragen. Für den Entwickler oder den Benutzer kann man nicht viel transparenter werden. Bedenkenswert.

1
Program.X

Sie können die folgende Bibliothek ausprobieren, sie ist einfach genug und nur eine einfache Oberfläche für das Open XML SDK von Microsoft (Sie können sogar Formatierungen, Stile und sogar ganze Arbeitsblätter aus einer sekundären Excel-Datei wiederverwenden): http: // officehelper .codeplex.com

1
aron.sinoai

Es gibt einen ziemlich guten Artikel und eine gute Bibliothek zu CodeProject von Yogesh Jagota:

Excel XML-Import-Export-Bibliothek

Ich habe es zum Exportieren von Daten aus SQL-Abfragen und anderen Datenquellen nach Excel verwendet.

Prost

1
marc_s

Spreadsheetgear ist die beste kommerzielle Bibliothek, die wir gefunden haben und verwenden. Unser Unternehmen führt viele fortgeschrittene Excel-Importe und -Exporte durch, und Spreadsheetgear unterstützt viele fortgeschrittene Excel-Funktionen, die weit über das hinausgehen, was Sie mit einfachem CSV tun können, und das ist schnell. Es ist zwar nicht kostenlos oder sehr günstig, aber es lohnt sich, weil der Support ausgezeichnet ist. Die Entwickler werden Ihnen tatsächlich antworten, wenn Sie auf ein Problem stoßen.

0
pilavdzice

Wie wäre es mit dem Apache-POI Java Bibliothek. Ich habe es nicht für Excel verwendet, aber für Word 2007.

0
harijay