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?
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.
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.
Versuchen Sie EPPlus , wenn Sie Excel 2007 verwenden. Unterstützt Bereiche, Cellstyling, Diagramme, Formen, Bilder und viele andere Dinge
Es gibt eine Handvoll Optionen:
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.
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.
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.
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.