Ich möchte ein Word-Dokument mit einer Vorlage erstellen, einige Variablen (Felder) ersetzen und als neues Word-Dokument speichern.
Ich dachte, Apache POI zu verwenden, Ссылка ist es das beste für diesen Zweck? Kannst du deine Eindrücke davon teilen?
Ich habe vorher mit POI gearbeitet und kann Word-Dokumente erstellen. Aber der Teufel steckt im Detail.
Word hat Tausende von Features: Sie können nummerierte Listen ab # 13 mit negativen Einzügen in zwei verbundene Zellen einer Tabelle einfügen, die in einer anderen Tabelle enthalten ist, die selbst Teil einer Aufzählungsliste ist ... Sie erhalten die Idee. Wenn die POI-Dokumentation besagt, dass es sich um eine in Arbeit befindliche Arbeit handelt, spiegelt das wider, was wahrscheinlich ein ewiger Zustand des Versuchs sein wird, der (uns undokumentierten) Spezifikation von Word nachzukommen.
Dokumente mit einem vernünftig "normalen" Satz gebrauchter Features werden von POI gut unterstützt, deren Schnittstellen und Methoden vernünftig und konsistent sind, aber manchmal ein wenig Arbeit erfordern. Aber wie Pascal sagt, werden auch Dokumente mit nicht zu vielen Features von RTF unterstützt. Ich habe fast keine Erfahrung, RTF zu machen, aber es ist wahrscheinlich ein bisschen einfacher als die Arbeit mit POI.
Wenn Sie in einer Umgebung oder für einen Kunden arbeiten, der darauf besteht, dass Ihre produzierten Dokumente .DOC
anstatt .RTF
sind, dann ist POI Ihre einzige Wahl, es sei denn, Sie können einen Schritt einführen, in dem Sie einen verwenden bisschen Office-Automatisierung, um RTF in DOC zu konvertieren.
Update: Ich habe in der Zwischenzeit noch ein paar Ideen gehabt.
Das Verwenden von POI oder das Erstellen von RTF-Dokumenten ist etwas, was Sie auf praktisch jeder Plattform tun können. In meinem Job laufen auf allen Servern, die solche Prozesse ausführen, beispielsweise Linux.
Im wahrscheinlichsten Fall, dass Ihre Programme unter Windows laufen, gibt es jedoch noch eine Alternative: Jacob Ссылка
Jacob ist eine COM
Schnittstelle für Java; Es ermöglicht Ihnen im Wesentlichen Windows-Programme wie Word und Excel "fern zu steuern". Das Dokument, mit dem ich oben verlinkt habe, ist nicht auf Jacobs eigener Website, sondern auf einer einzigen Seite mit "Cookie-Cutter" -Rezepten für die Verwendung von Jacob. Das Projekt selbst ist auf SourceForge: Ссылка Aber die Leute behaupten, und zu Recht, dass die Dokumentation ein bisschen fehlt.
Jacob hat den Vorteil gegenüber allen anderen Lösungen, die Sie mit den "echten" Word- und damit allen Funktionen von Word zu tun haben. Dies wäre eine Alternative, wenn es Detailaspekte Ihres Dokuments gibt, die nicht mit POI oder über das RTF-Format behandelt werden können.
Wenn Sie eine Vorlage verwenden und das Word-Dokument nicht von Grund auf neu erstellen möchten, ist POI nach meiner Kenntnis eine ziemlich gute Lösung. Sie öffnen die Vorlage und wählen die Zonen aus, die Sie ersetzen möchten.
Sie sagen POI ist immer noch Entwicklung, aber ich habe es in der Produktionsumgebung verwendet und es funktioniert im Moment ziemlich gut.
Ich bin mir nicht sicher über den genauen Status des Word-Dokumenten-Supports in POI, aber laut der POI-Website wird noch gearbeitet (kann nicht sagen, was genau das bedeutet). Zu diesem Zeitpunkt würde ich POI nicht verwenden, sondern versuchen, ein RTF-Dokument zu generieren. Dafür könnten Sie:
Ich würde für iText gehen.
Ich weiß, dass diese Frage ein bisschen alt ist, aber ich denke, viele Leute finden das immer noch bei Suchmaschinen, also poste ich eine andere Möglichkeit, genau das zu tun, was Sie wollen:
Wenn das einzige Ziel darin besteht, eine Word-Vorlage zu haben und einige Werte darin zu ersetzen, könnten Sie eine Word-Vorlage als einzelnes XML (nicht als docx) speichern und dann mit einfachem Java und ohne Framework verarbeiten. Wenn Sie mehr tun möchten (z. B. Erstellen von Listen oder Tabellen), sollten Sie möglicherweise auch das xml-Format verstehen und Ihre eigenen Helfer schreiben, bevor Sie ein Framework wie POI laden.
Hier ist ein Beispiel, wie man das macht: Ссылка
Dies ist die schnelle Version, wenn Sie eine schöne Version möchten, können Sie versuchen, einen XML-Prozessor zu verwenden.
PS: Benutzer bemerken vielleicht, dass die Dateierweiterung nicht doc, sondern xml ist und sie können Ihnen dafür die Schuld geben, aber das ist in Ordnung ... benennt es einfach in doc um, Word erkennt das Format und alle sind wieder glücklich;)
Sie sollten sich die Aspose.Words-Komponenten ansehen. Sie haben kürzlich mit der Bereitstellung einer Java-Version der Komponente begonnen.
Siehe folgenden Link: Aspose.Word for Java
Dies unterstützt Word-Automatisierung, -Erstellung und erweiterte Funktionen wie Mail-Zusammenführung, ohne dass eine Instanz von Microsoft Word auf dem Computer benötigt wird. Der eigentliche Vorteil besteht darin, dass Sie im Kontext eines tatsächlichen Word-Dokuments arbeiten können und keine Kompromisse eingehen müssen, indem Sie RTFs usw. erstellen.
Die Java-Version ist derzeit nicht so umfassend wie die .Net-Version, aber die Hauptfunktionalität ist da und sie drängen darauf, bald eine funktionsgleiche Version zu haben.
Wenn Sie die Java-Version erwerben, erhalten Sie außerdem ein Jahr lang kostenlose Upgrades / Support, da die neuen Versionen erstellt werden.
Wenn Sie mit docx-Dokumenten arbeiten, ist docx4j eine Option. Wie POI, seine Open Source.
Tags und Links java ms-word apache-poi