2 Stimmen

Ist es möglich, mit Qt in das .doc-Format auszugeben?

Ich schreibe ein Programm mit Qt. Ich möchte es in .doc ausgeben, um die Formatierung beizubehalten, aber alles, was von Qt unterstützt wird, sind reine Text-, ODF- und HTML-Formate. Bei ODF und HTML wird die Formatierung beibehalten, aber dann müsste ich diese in eine .doc-Datei kopieren und einfügen.

Ich möchte eine .doc-Datei speichern können und mich nicht darum kümmern müssen, dies zu tun. Ich habe das schon oft gegoogelt, aber keine Lösung gefunden.

1voto

Ivan Punkte 179

Die einzige Möglichkeit, eine gültige .doc-Datei zu erstellen, ist die Verwendung von Microsoft Office. Dies kann von Ihrem Programm aus mit OLE Automation geschehen (mehr zu diesem Problem hier - Warum sind die Microsoft Office-Dateiformate so kompliziert? (Und einige Umgehungsmöglichkeiten) ).

Qt bietet das ActiveQt-Framework für die Arbeit mit COM-Objekten. So können Sie Word laden und .html in .doc konvertieren, indem Sie dessen COM-Schnittstelle nutzen. Natürlich muss MS Office installiert sein.

0voto

Bill Punkte 13799

Wenn Sie ".doc"-Format sagen, nehme ich an, dass Sie das von Microsoft Word verwendete "Word 97-2003-Dokument"-Format meinen. Microsoft Office kann .html-Dateien problemlos öffnen, so dass Sie diesen Weg wählen könnten. Wenn Word auf dem Computer installiert ist, auf dem Sie das Programm ausführen, können Sie die Daten in die Zwischenablage kopieren und mit Hilfe der Automatisierungsfunktion von Word einfügen und im .doc-Format speichern lassen.

Welche Formatierung verwenden Sie konkret?

0voto

Etienne Savard Punkte 4621

Wie Sie sagten, QTextDocumentWriter nur einfache Text-, ODF- und HTML-Formate unterstützen.

Wenn Sie Ihr Dokument unter Windows nur lesen müssen, können Sie eine PDF-Datei erstellen, anstatt zu versuchen, eine .doc-Datei zu erzeugen:

 QPrinter printer;
 QTextDocument document;

 //TODO: Put stuff to print in your 'document'

 printer.setOutputFormat(QPrinter::PdfFormat);
 printer.setOutputFileName("/foobar/nonwritable.pdf");

 document.print( printer );

Eine andere mögliche Lösung, wenn Sie Ihr Dokument in Word unbedingt ändern müssen, ist ein ODF-Zusatzmodul für Word 2003 um Ihre ODF-Datei zu öffnen.

0voto

Firesh Punkte 89

Es gibt noch eine andere Alternative dazu... Praktisch können Sie es hacken nennen, aber es ist eine Art von einfachen Weg, wie ich es für mich finden.

  1. Erstellen Sie eine HTML-Vorlage, die wie Ihr Dokument aussieht
  2. Öffnen Sie die HTML-Vorlage mit Microsoft Word
  3. Passen Sie die Vorlage an (einige Dinge könnten falsch eingestellt sein)
  4. An den Stellen, an denen Sie Daten/Text schreiben möchten, setzen Sie eine Art Markierung, z. B. #offaddress#
  5. Speichern Sie das Dokument
  6. Das Dokument wieder in HTML umbenennen
  7. Öffnen Sie das Dokument. Das Dokument wird eine Menge Microsoft Word-Dokumentencodes und andere Dinge enthalten; keine Sorge.
  8. Kopieren Sie den gesamten Code und fügen Sie ihn in Ihr Qt
  9. Ausgabe in Qt als .doc-Datei einstellen
  10. Ersetzen Sie Ihre Schlüsselwörter (#offaddress#) durch Ihren Inhalt
  11. Speichern Sie den Inhalt in einer Datei mit der Erweiterung .doc

Voilà, Sie haben Ihre .doc-Datei.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X