Frage

Ich habe ein Projekt, bei dem ich einen Berichtsexport im MS Word-Format erstellen möchte.Der Bericht enthält Bilder/Grafiken, Tabellen und Text.Wie geht das am besten?Tools von Drittanbietern?Was sind Ihre Erfahrungen?

War es hilfreich?

Lösung

Die Antwort hängt leicht davon ab, ob die Anwendung auf einem Server oder auf dem Client-Computer ausgeführt wird.Wenn Sie auf einem Server arbeiten, sollten Sie eines der XML-basierten Office-Generierungsformate verwenden, da es dabei bekannte Probleme gibt Verwendung von Office Automation auf einem Server.

Wenn Sie jedoch auf dem Client-Rechner arbeiten, haben Sie die Wahl zwischen beiden mit Office-Automatisierung oder unter Verwendung des Office Open XML-Formats (siehe Links unten), das von Microsoft Office 2000 und höher entweder nativ oder über Service Packs unterstützt wird.Ein Nachteil dabei ist jedoch, dass Sie bestimmte Arten von Grafiken oder Bildern, die Sie anzeigen möchten, möglicherweise nicht einbetten können.

Die beste Vorgehensweise hängt maßgeblich davon ab, wie viel Zeit Sie in die Entwicklung investieren müssen.Wenn Sie den Weg der Office-Automatisierung gehen, gibt es eine ganze Reihe guter Tutorials, die über Google gefunden werden können und ziemlich einfach zu erlernen sind.Allerdings ist das Open-Office-XML-Format recht neu, sodass die Lernkurve möglicherweise etwas höher ist.

Informationen zu Office Open XML

Andere Tipps

Kostenlose DocX-Bibliothek zum Erstellen von DocX-Dokumenten, aktiv entwickelt und sehr einfach und intuitiv zu bedienen.Da CodePlex im Sterben liegt, ist das Projekt umgezogen Github.

Ich habe die letzte Woche damit verbracht, mich auf den neuesten Stand zu bringen Office Open XML.Wir verfügen über eine Datenbankanwendung, die Umfragedaten speichert, die wir in Microsoft Word melden möchten.Sie können Word 2007-Dateien (docx) in C# tatsächlich von Grund auf erstellen.Das Open XML SDK Version 2 enthält eine coole Anwendung namens Document Reflector, die tatsächlich den C#-Code für die vollständige Neuerstellung eines Word-Dokuments bereitstellt.Sie können Teile oder den gesamten Code verwenden und die Bits, die Sie ändern möchten, im laufenden Betrieb ersetzen.Die im SDK enthaltene Hilfedatei enthält auch einige gute Codebeispiele.

Es ist weder Office Interop noch andere Office-Software auf dem Server erforderlich – die neuen Formate sind zu 100 % XML.

Haben Sie darüber nachgedacht, .RTF als Alternative zu verwenden?

Es unterstützt das Einbetten von Bildern und Tabellen sowie von Text, wird standardmäßig mit Microsoft Word geöffnet und obwohl sein Funktionsumfang eingeschränkter ist (erweiterte Formatierungen ausgenommen), ist es für etwas, das wie ein Word-Dokument aussieht, sich anfühlt und geöffnet wird, nicht weit davon entfernt.

Ihre Endbenutzer werden es wahrscheinlich nicht bemerken.

ich habe gefunden Aspose-Wörter das Beste sein, da nicht jeder Dateien im Office Open XML/*.docx-Format öffnen kann und die Word-Interop- und Word-Automatisierung fehlerhaft sein kann.Aspose Words unterstützt die meisten Dokumentdateitypen ab Word 97.

Es handelt sich um eine kostenpflichtige Komponente, die jedoch großartig unterstützt wird.Die andere Alternative ist, wie bereits vorgeschlagen, RTF.

So generieren Sie Word-Dokumente mit Office Automation in .NET, insbesondere in C# oder VB.NET:

  1. Ergänzen Sie die Microsoft.Office.Interop.Word Assembly-Referenz zu Ihrem Projekt.Der Weg ist \Visual Studio Tools für Office\PIA\Office11\Microsoft.Office.Interop.Word.dll.

  2. Befolgen Sie das Beispiel für Microsoft -Code, die Sie hier finden können: http://support.microsoft.com/kb/316384/en-us.

Schmidty, wenn Sie Word-Dokumente auf einem Webserver generieren möchten, benötigen Sie jeweils eine Lizenz Klient (nicht nur der Webserver).Siehe diesen Abschnitt im ersten Abschnitt Verknüpfung Rob hat gepostet:

„Neben den technischen Problemen müssen auch Lizenzfragen berücksichtigt werden.“Aktuelle Lizenzrichtlinien verhindern, dass Office-Anwendungen auf einem Server zur Bearbeitung von Client-Anfragen verwendet werden, es sei denn, diese Clients verfügen selbst über lizenzierte Kopien von Office.Die Verwendung serverseitiger Automatisierung zur Bereitstellung von Office-Funktionalität für nicht lizenzierte Arbeitsstationen ist nicht durch die Endbenutzer-Lizenzvereinbarung (EULA) abgedeckt.

Wenn Sie die Lizenzanforderungen erfüllen, müssen Sie meiner Meinung nach COM Interop verwenden – genauer gesagt das Primäre Interop-Assemblys für Office XP.

Schauen Sie sich VSTO (Visual Studio Tools für Office) an.Es ist ziemlich einfach, eine Word-Vorlage zu erstellen, eine XML-Dateninsel darin einzufügen und sie dann an den Client zu senden.Wenn der Benutzer das Dokument in Word öffnet, liest Word die XML-Datei, wandelt sie in WordML um und rendert sie.Sie sollten sich die ServerDocument-Klasse der VSTO-Bibliothek ansehen.Aus meiner Erfahrung ist keine zusätzliche Lizenz erforderlich.

Ich hatte gute Erfolge mit dem Syncfusion Backoffice DocIO, das die Formate doc und docx unterstützt.

In früheren Versionen wurde nicht alles in Word unterstützt, aber Ihrer Liste zufolge haben wir es mit Tabellen und Text als Serienbrief-Ansatz getestet und es hat gut funktioniert.

Ich bin mir jedoch nicht sicher, ob es um den Import von Bildern geht.Auf ihrer Klappentextseite http://www.syncfusion.com/products/DocIO/Backoffice/features/default.aspx es sagt

Blockquote Essential Docio unterstützt das Einsetzen von Skalar- und Vektorbildern in fast allen Formaten in das Dokument.Bitmap, GIF, PNG und TIFF sind einige der gängigen Bildtypen, die unterstützt werden.

Es ist also eine Überlegung wert.

Wie andere bereits erwähnt haben, können Sie ein RTF-Dokument erstellen. Es gibt einige gute RTF-Bibliotheken für .net wie http://www.codeproject.com/KB/string/nrtftree.aspx

Ich habe mich diesem Problem gestellt und eine kleine Bibliothek dafür erstellt.Es wurde in mehreren Projekten verwendet und dann beschloss ich, es zu veröffentlichen.Es ist kostenlos und sehr, sehr einfach, aber ich bin sicher, dass es Ihnen bei der Aufgabe helfen wird.Rufen Sie die Office Open XML-Bibliothek auf. http://invoke.co.nz/products/docx.aspx.

Ich habe ein geschrieben Blogbeitragsreihe zur Open XML WordprocessingML-Dokumentgenerierung.Mein Ansatz besteht darin, dass Sie ein Vorlagendokument erstellen, das Inhaltssteuerelemente enthält, und in jedes Inhaltssteuerelement einen XPath-Ausdruck schreiben, der definiert, wie der Inhalt aus einem XML-Dokument abgerufen wird, das die Daten enthält, die den Dokumentgenerierungsprozess steuern.Der Code ist kostenlos und steht unter der Lizenz Gegenseitige Microsoft-Lizenz (Ms-RL).In derselben Blogbeitragsreihe untersuche ich auch einen Ansatz, bei dem Sie C#-Code in Inhaltssteuerelementen schreiben.Der Dokumentgenerierungsprozess verarbeitet dann das Vorlagendokument und generiert ein C#-Programm, das die gewünschten Dokumente generiert.Ein Vorteil dieses Ansatzes besteht darin, dass Sie ihn verwenden können beliebig Datenquelle als Datenquelle für den Dokumentgenerierungsprozess.Dieser Code ist auch unter der Microsoft Reciprocal License lizenziert.

Ich mache derzeit genau das.

Wenn das Dokument nicht sehr groß ist, keine Bilder usw. enthält, speichere ich es als RTF mit #MergeFields# darin, ersetze sie einfach durch Inhalte und sende das Ergebnis als RTF an den Benutzer.

Bei größeren Dokumenten, einschließlich Bildern und dynamisch eingefügten Bildern, speichere ich das ursprüngliche Word-Dokument erneut als einzelne Webseite *.mht-Datei, die die #MergeFields# enthält.Ich mache dann das Gleiche wie oben.Damit kann ich ganz einfach eine DataTable mit einigen grundlegenden HTML-Tabellen-Tags rendern und eines der #MergeFields# durch eine ganze Tabelle ersetzen.

Bilder können auf Ihrem Server gespeichert und die URL auch in das Dokument eingebettet werden.

Interessanterweise handelt es sich bei den neuen Office 2007-Dateiformaten eigentlich um ZIP-Dateien. Wenn Sie die Erweiterung in „.zip“ umbenennen, können Sie sie öffnen und ihren Inhalt sehen.Das bedeutet, dass Sie in der Lage sein sollten, Inhalte wie Bilder mithilfe einer einfachen C#-Zip-Bibliothek ein- und auszutauschen.

@Dale Ragan:Das funktioniert mit dem XML-Format von Office 2003, ist aber nicht portierbar (wie es beispielsweise bei .doc- oder .docx-Dateien der Fall wäre).

Um diese zu lesen/schreiben, müssen Sie das ActiveX-Steuerelement der Word-Objektbibliothek verwenden:

http://www.codeproject.com/KB/aspnet/wordapplication.aspx

@Danny Smurf:Tatsächlich beschreibt dieser Artikel, was das Office Open XML-Format werden wird, mit dem Rob geantwortet hat.Ich werde den Links, die ich veröffentliche, vorerst mehr Aufmerksamkeit schenken, um sicherzustellen, dass sie nicht veraltet sind.Ich habe tatsächlich eine Suche nach WordML durchgeführt, wie es damals hieß.

Ich glaube, dass das Office Open XML-Format der beste Weg ist.

LibreOffice Unterstützt auch Headless-Interaktion über API.Leider gibt es derzeit noch nicht viele Informationen zu dieser Funktion.:(

Sie können auch den Word-Dokumentgenerator verwenden.Es kann für die clientseitige oder serverseitige Bereitstellung verwendet werden.Aus der Projektbeschreibung:

WordDocumentGenerator ist ein Dienstprogramm zum Generieren von Wortdokumenten aus Vorlagen mit Visual Studio 2010 und dem Öffnen von XML 2.0 SDK.WordDocumentGenerator hilft, Wortdokumente sowohl nicht refresh-möglich als auch aktualisierbar zu generieren, basierend auf vordefinierten Vorlagen mit minimalen Codeänderungen.Inhaltskontrollen werden als Platzhalter für die Erzeugung von Dokumenten verwendet.Es unterstützt Word 2007 und Word 2010.

Nimm es: http://worddocgenerator.codeplex.com/

SDK herunterladen: http://www.microsoft.com/en-us/download/details.aspx?id=5124

Eine weitere Alternative ist Windward Docgen (Haftungsausschluss – ich bin der Gründer).Mit Windward entwerfen Sie die Vorlage in Word, einschließlich Bildern, Tabellen, Grafiken, Messgeräten und allem anderen, was Sie möchten.Sie können Tags festlegen, an denen Daten aus einer XML- oder SQL-Datenquelle eingefügt werden (einschließlich Funktionen wie forEach-Schleifen, Import usw.).Und dann den Bericht in DOCX, PDF, HTML usw. generieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top