Hat schon mal jemand erfolgreich versucht,
eine Word (docx) Datei selbst aus einen C Programm
(oder ähnliches) heraus zu erzeugen?
docx scheint eine ZIP-Datei zu sein,
welche mehrere *.xml Dateien enthält.
Ist da Dokumentation vorhanden, welche XML Dateien man erzeugen
muss, und was darin wie stehen muss?
Verwende Java und Apache POI, das ist eine gute Library für MS Office
Dokumente. Solche Dateien direkt manuell zu erzeugen ist sehr
kompliziert, das kannst du vergessen...
Peter P. schrieb:> Ist da Dokumentation vorhanden, welche XML Dateien man erzeugen> muss, und was darin wie stehen muss?
Ja selbstverständlich.
DOCX ist OfficeOpen XML. Die handliche Spezifikation von rund 6000
Seiten kannst du dir bei der ISO besorgen...
Warum zum Geier will man heute noch freiwillig OOXML erzeugen?! Das war
doch schon überholt, als es erfunden wurde.
Ich kenne deine Anwendung ja nicht.
Muss es denn explizit Word-kompatibel sein oder willst du eigentlich
eher ein PDF erzeugen?
"Word" und "kompatibel" in einem Satz ist sowieso gewagt.
Ich habe im Endeffekt ein (in Word vorgegebenes) Template
(mit Kopf- und Fusszeile) und möchte die Daten, die dort eingefüllt
werden (mehr oder weniger wahrscheinlich nur Text, keine Bilder
oder sonstiges, vielleicht noch Farben und Fontgrößen/Fonts)
per Programm erzeugen. Fallback ist, die Daten per Cut&Paste
dort reinzukopieren, aber schöner wäre es,
wenn man das ganze Dokument in einem Rutsch erzeugen könnte.
Geht es mit PDF einfacher? Gibt es hier bessere Möglichkeiten?
Ist eine *.pdf Datei mehr als ein proprietäres Binary?
Laut
http://de.wikipedia.org/wiki/Portable_Document_Format
gibt es schon Varianten z.B. von XML zu PDF,
aber ob dies mein Problem mit dem Template löst?
Ich habe so etwas vor (sehr) langer Zeit mal mit
RTF (Rich Text Format) gemacht, aber bei RTF habe ich
jetzt gedacht, dass dies vielleicht nicht mehr
ganz so "state-of-the-art" ist...
http://de.wikipedia.org/wiki/Rich_Text_Format
Peter P. schrieb:> und möchte die Daten, die dort eingefüllt> werden (mehr oder weniger wahrscheinlich nur Text, keine Bilder> oder sonstiges, vielleicht noch Farben und Fontgrößen/Fonts) per> Programm erzeugen.
Sofern auf dem Rechner, auf dem das geschehen soll, Word installiert
ist, lässt sich das auch mit Word selbst erledigen. Das nämlich lässt
sich per Automation ganz gut steuern. Diese Automation beherrscht u.a.
das bei Windows mitgelieferte VBscript.
Hab ich schon mal für den gleichen Zweck verwendet... fertiges Docx
Template mit Messdaten, generierten Bildern und Diagrammen füllen.
Hat sehr gut funktioniert.
https://docx.codeplex.com/
Peter P. schrieb:> Geht es mit PDF einfacher? Gibt es hier bessere Möglichkeiten?
Die Liste aller Möglichkeiten wäre mit Sicherheit viel zu lang, um sie
hier auch nur näherungsweise erschöpfend darstellen zu können. Wichtig
wäre es zunächst einmal zu wissen, was denn das Ergebnis Deiner
Bemühungen sein soll? Geht es um die Erstellung eines fertigen
Dokumentes das dann nur noch verschickt, gedruckt und gelesen wird oder
soll das erstellte Word-Dokument noch weiter bearbeitet werden?
Im ersten Fall würde ich auf Office-Pakete ganz verzichten und immer ein
Textsatzsystem verwenden, von denen TeX/LaTeX der bekannteste Vertreter
sein dürfte. Denen kannst Du die Inhalte in einer Markup-Sprache
präsentieren, die sich technisch ganz einfach erzeugen lässt, eine ganze
Liste von Anregungen dazu findest du hier:
http://docscript.sourceforge.net/docscript.pdf
Das Ergebnis lässt sich leicht in viel gängige portable Formate wandeln.
Die benötigten Tools sind bei jeder Linux-Distribution dabei und sicher
auch für Windows zu haben.
Ist es dagegen wichtig, dass ein Word-Dokument entsteht um es weiter
bearbeiten zu können, dann würde ich es auf jeden Fall erst einmal über
die Word-internen Werkzeuge versuchen. Ich habe zwar seit fast 20 Jahren
nicht mehr mit Word gearbeitet aber jedes Office-Paket kommt heute mit
einen Makro-Recorder und einer oder mehreren Skriptsprachen. Dabei
bieten sich grundsätzlich zwei mögliche Ansätze: Entweder Du
modifizierst Dein Template so, dass es sich die einzufügenden Inhalte
selbst aus einer Datenbank oder von einem Server holt, eventuell kannst
Du auch Programme aus Word heraus aufrufen, die die Daten liefern. Oder
Du erzeugst aus Deinem Programm heraus eine Makro-Aufzeichnung oder ein
Skript, das Du dann aus Word heraus aufrufst und das dann die Daten an
den entsprechenden Stellen einfügt. Das würde ich allerdings nur
versuchen, wenn das Dokument völlig neu erstellt wird. Das Einfügen in
ein vorhandenes Dokument oder Template kann schnell Probleme machen,
wenn sich in der Vorlage irgendetwas ändert.
Ich kann für deinen Fall auch nur Latex empfehlen. Ich benutze TeXstudio
unter Win7, funktioniert gemeinsam mit MikTex einwandfrei. Man braucht
am Anfang zwar ein bisschen Einlernphase, danach gehts aber ziemlich
gut. Sind vorallem viele Informationen und Tutorials im Internet.
Von dort würd ich mir mal auch auch Dokumentvorlagen herunterladen und
anschauen, da kannst du einiges Lernen.
Ausgabe in pdf ist Problemlos möglich.
Peter P. schrieb:> Geht es mit PDF einfacher? Gibt es hier bessere Möglichkeiten?
Naja, es gibt zumindest gefühlte 200 vernünftig dokumentierte
Bibliotheken für PDF.
Word automatisieren ginge ja auch, wie schon vorgeschlagen.
Für dein Platzhalterkram würde ich aber vielleicht eher auf etwas wie
LaTeX zurückgreifen, oder XLS-FO.
Rufus Τ. Firefly schrieb:> Peter P. schrieb:>> und möchte die Daten, die dort eingefüllt>> werden (mehr oder weniger wahrscheinlich nur Text, keine Bilder>> oder sonstiges, vielleicht noch Farben und Fontgrößen/Fonts) per>> Programm erzeugen.>> Sofern auf dem Rechner, auf dem das geschehen soll, Word installiert> ist, lässt sich das auch mit Word selbst erledigen. Das nämlich lässt> sich per Automation ganz gut steuern. Diese Automation beherrscht u.a.> das bei Windows mitgelieferte VBscript.
Hast Du hier vielleicht einen Link auf ein Beispiel wie man das konkret
machen koennte?