10
votes

Générer des documents de mots (.doc / .odt) via c ++ / qt

J'utilise QT 4.5.3 et Windows XP. J'ai besoin de ma demande pour générer des documents contenant les informations utilisées et générées. Les informations utilisées ne seront que des chaînes ( qstring être plus spécifiques) et les informations générées seront cordes et images aussi.

Je veux que les documents soient un document MS Word ( .doc ) ou peut être un format de document ouvert ( .Odt ) aussi je veux que les documents soient formatés avec polices, images, tables de données, certaines couleurs de fond et tout .

J'ai fait la création PDF à l'aide de qtextDocument , qtextcursor et qprinter . Mais quand j'ai essayé d'appliquer le même qtextdocument pour odt , j'ai fini par une erreur de format juste.

Y a-t-il un moyen de générer de tels documents en utilisant toutes les autres bibliothèques utilisant C ++? Comment vous utilisez les gars pour générer de tels documents ( .odt /. doc ) en C ++? Tous les pointeurs, liens, exemples concernant cela sont les bienvenus.


0 commentaires

3 Réponses :


1
votes

Peut-être que 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 produire Doc DocX, etc., mais vous pouvez utiliser COM (ActiveQT) ou une autre bibliothèque à écrire dans ces formats ou d'autres formats dont vous avez besoin


0 commentaires

9
votes

Je l'ai fait via le qt code> way. c'est-à-dire en utilisant le module activeqt code>.

La documentation de référence pour MS Word forte> peut être obtenue via, p>

Documentation MSDN , qui a effectivement pointé vers le fichier vbawd10.chm code> qui contient les API ActiveX pour MS Word. p>

L'application Word peut être initialisée par p> xxx pré>

Les sous-objets de l'application Word peuvent être obtenus via la fonction, p> xxx pré>

pour par exemple: p> xxx pré>

pour transmettre le sous-objet obtenu sous forme d'argument, P>

activeDocument->dynamicCall("Close(void)");


0 commentaires

0
votes

Pour moi, une meilleure façon d'automatiser les applications de bureau importe le modèle d'objet de la bibliothèque de type MS Word Com dans le projet C ++. Ceci est très similaire au EXEMPLE QUTLOOK pour le Demande Outlook. Vous pouvez extrapoler la technique sur Excel et PowerPoint si vous le souhaitez, à l'aide d'OLEVIEW.EXE pour obtenir les GUID de la bibliothèque. ici est un projet complet à GitHub.

Le fichier de projet QMake: p>

#include <QApplication>
#include <QStandardPaths>
#include <QDir>
#include "MSWORD.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    Word::Application word;
    if (!word.isNull()) {
        word.SetVisible(false);

        Word::Documents* docs = word.Documents();
        Word::Document* newDoc = docs->Add();
        Word::Paragraph* p = newDoc->Content()->Paragraphs()->Add();
        p->Range()->SetText("Hello Word Document from Qt!");
        p->Range()->InsertParagraphAfter();
        p->Range()->SetText("That's it!");

        QDir outDir(QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation));

        QVariant fileName = outDir.absoluteFilePath("wordaut.docx");
        QVariant format = Word::wdFormatXMLDocument;
        newDoc->SaveAs2(fileName, format);

        QVariant fileName2 = outDir.absoluteFilePath("wordaut2.doc");
        QVariant format2 = Word::wdFormatDocument;
        newDoc->SaveAs2(fileName2, format2);

        newDoc->Close();
        word.Quit();
    }

    return 0;
}


0 commentaires