Génération de documents Word (.doc / .odt) à C ++ / Qt
Question
J'utilise Qt 4.5.3 et Windows XP. Je dois ma demande pour générer des documents qui contient les informations qui est utilisé et généré. L'information qui est en cours sera seulement cordes (QString
pour être plus précis) et l'information qui est générée sera chaînes et images ainsi.
Je veux des documents à un document MS Word (de .doc
) ou peut être un format ouvert (Document .odt
) Je veux aussi les documents à formater avec polices, images, tableaux de données, des couleurs de fond et tous .
J'ai fait la création PDF fichiers à l'aide QTextDocument
, QTextCursor
et QPrinter
. Mais quand j'ai essayé d'appliquer la même QTextDocument
odt , je me suis retrouvé avec une erreur de format Élargi.
Y at-il un moyen de générer de tels documents à l'aide d'autres bibliothèques que l'utilisation C ++? Comment vous les gars utiliser pour générer de tels documents ( .odt /. doc ) en C ++? Tous les pointeurs, des liens, des exemples en ce qui concerne ce sont les bienvenus.
La solution
Je l'ai fait par la voie de Qt
. i.e. en utilisant le module de ActiveQt
.
La documentation de référence pour MS Word peuvent être obtenus par le biais,
documentation MSDN , qui fait souligné le fichier VBAWD10.chm
qui a le ActiveX apis pour MS Word .
La Parole application peut être initialisé par
QAxWidget wordApplication("Word.Application");
Les sous-objets de la demande de mot peuvent être obtenus grâce à la fonction,
QAxBase::querySubObject()
Pour par exemple:
QAxObject *activeDocument = wordApplication.querySubObject("ActiveDocument");
Pour passer le sous-objet obtenu sous forme d'un argument,
QVariant QAxBase::asVariant () const
Les appels de fonction impliquant l'objet de mot peut être appelé en utilisant la fonction à l'aide,
QAxBase::dynamicCall ()
Pour par exemple:
activeDocument->dynamicCall("Close(void)");
Après une assez bonne quantité de lutte et quelques convainc, il fonctionne très bien. :)
espère que cela aide à ceux qui sont tous à la recherche de solutions similaires ...
Autres conseils
peut-être vous pouvez utiliser cela et écrire dans un fichier au format ODF http: // doc.trolltech.com/4.6/qtextdocumentwriter.html#supportedDocumentFormats qt ne sait pas comment la sortie doc docx etc, mais vous pouvez utiliser com (activeQt) ou d'une autre bibliothèque pour écrire dans ces ou d'autres formats dont vous avez besoin