wake-up-neo.net

Erstellen Sie Excel-Dateien aus C # ohne Office

Ich schreibe ein Programm, das Excel-Berichte generiert und derzeit die Microsoft.Interop.Excel-Referenz verwendet. Auf meinem Entwicklungscomputer ist Excel installiert, auf dem Endbenutzer ist jedoch möglicherweise Office installiert. Schlägt dieses Tool fehl, wenn Office nicht auf dem Computer des Endbenutzers installiert ist, oder ist dieser Interop-Dienst von der eigentlichen Anwendung getrennt?

54
tbischel

Sofern Sie Excel nicht auf dem Server/PC installiert haben oder ein externes Tool verwenden (was ohne Excel Interop möglich ist, siehe Excel-Datei (.XLS und .XLSX) aus C # erstellen ), es wird fehlschlagen . Für die Verwendung des Interops muss Excel installiert sein.

35
Adriaan Stander

Wenn Sie daran interessiert sind, XLSX-Dateien (Office 2007 und höher) zu erstellen, haben Sie Glück. In Office 2007+ wird OpenXML verwendet. Mangels geeigneterer Beschreibung handelt es sich um XML-Dateien in einer Zip-Datei mit dem Namen .xlsx

Nehmen Sie eine Excel-Datei (2007+) und benennen Sie sie in .Zip um. Sie können sie öffnen und einen Blick darauf werfen. Wenn Sie .NET 3.5 verwenden, können Sie die System.IO.Packaging-Bibliothek verwenden, um die Beziehungen und die Zip-Datei selbst zu bearbeiten, und linq to xml, um mit der XML zu spielen (oder nur DOM, wenn Sie es bequemer haben).

Andernfalls empfehlen wir DotNetZip , eine leistungsstarke Bibliothek zur Manipulation von Zip-Dateien.

OpenXMLDeveloper hat viele Ressourcen über OpenXML und Sie können dort mehr finden.

Wenn Sie .xls (2003 und niedriger) möchten, müssen Sie sich Bibliotheken von Drittanbietern ansehen oder das Dateiformat selbst lernen, um dies zu erreichen, ohne dass Excel installiert ist.

40
Aren

Versuchen Sie EPPlus , wenn Sie Excel 2007 verwenden. Unterstützt Bereiche, Cellstyling, Diagramme, Formen, Bilder und viele andere Dinge

28
Jan Källman

Es gibt eine Handvoll Optionen:

  • NPOI - Was ist kostenlos und Open Source.
  • Aspose - Ist definitiv nicht frei, aber robust.
  • Spreadsheet ML - Grundsätzlich XML zum Erstellen von Tabellenkalkulationen.

Für die Verwendung von Interop muss Excel auf dem Computer installiert sein, auf dem es ausgeführt wird. In einer serverseitigen Lösung wird dies schrecklich sein. Verwenden Sie stattdessen ein Tool wie das oben beschriebene, mit dem Sie eine Excel-Datei erstellen können, ohne dass Excel installiert wird.

Wenn der Benutzer nicht über Excel verfügt, sondern über ein Tool zum Lesen von Excel (z. B. Open Office), kann es offensichtlich geöffnet werden. Microsoft bietet einen kostenlosen Excel-Viewer für Benutzer an, die nicht über Excel verfügen.

11
Thomas

Ein Interop ruft etwas anderes auf, es ist eine Interoperabilitäts-Assembly, also arbeiten Sie mit etwas zusammen ... in diesem Fall mit Excel, dem tatsächlich installierten Excel.

In diesem Fall wird es nicht ausgeführt, da es von Excel abhängt , Sie rufen nur Excel-Funktionen auf. Wenn sie es nicht installiert haben ... Pech gehabt.

Es gibt Methoden zum Generieren ohne Excel, vorausgesetzt, das 2007-Dateiformat ist in Ordnung. Hier einige:

wie gesagt, dies ist das 2007-Format , normalerweise, wenn überhaupt, das ist der Deal-Breaker.

10
Nick Craver

Mit OleDB können Sie ganz einfach Excel-Dateien erstellen, lesen und bearbeiten. Weitere Informationen finden Sie in den MSDN-Dokumenten:

http://msdn.Microsoft.com/en-us/library/aa288452 (VS.71) .aspx

Ich habe OleDB verwendet, um aus Excel-Dateien zu lesen, und ich weiß, dass Sie sie erstellen können, aber ich habe es nicht aus erster Hand gemacht.

7
Justin

Sie können die ExcelStorage-Klasse der Bibliothek FileHelpers verwenden, sie ist sehr einfach und unkompliziert. Auf dem Computer muss Excel 2000 oder höher installiert sein.

Der FileHelpers ist eine kostenlose und einfach zu verwendende .NET-Bibliothek zum Importieren/Exportieren von Daten aus Datensätzen mit fester Länge oder Begrenzung in Dateien, Zeichenfolgen oder Streams.

3
Dean Kuga