Создание текстовых документов (.doc / .odt) через C ++ / Qt - PullRequest
10 голосов
/ 05 июля 2010

Я использую Qt 4.5.3 и Windows XP. Мне нужно мое приложение для генерации документов, которые содержат информацию, которая используется и генерируется. Используемая информация будет просто строками (точнее, QString), а генерируемая информация будет строками и изображениями .

Я хочу, чтобы документы были документом MS Word (.doc) или могут быть в формате открытого документа (.odt). Также я хочу, чтобы документы форматировались с использованием шрифтов, изображений, таблиц данных, некоторых цвета фона и все .

Я создал файлы PDF , используя QTextDocument, QTextCursor и QPrinter. Но когда я попытался применить тот же QTextDocument для odt , у меня закончилась ошибка форматирования.

Есть ли способ генерировать такие документы с использованием любых других библиотек, использующих C ++? Как вы, ребята, используете для создания таких документов ( .odt /. doc ) в C ++? Любые указатели, ссылки, примеры по этому поводу приветствуются.

Ответы [ 3 ]

8 голосов
/ 28 июля 2010

Я сделал это путем Qt.то есть с помощью модуля ActiveQt.

Справочную документацию для MS Word можно получить через

документацию MSDN , которая фактически указывает наVBAWD10.chm файл, содержащий API ActiveX для MS Word.

Приложение Word можно инициализировать с помощью

QAxWidget wordApplication("Word.Application"); 

Субъекты приложения Word можно получить с помощью функции.,

QAxBase::querySubObject()

Например:

QAxObject *activeDocument = wordApplication.querySubObject("ActiveDocument");

Для передачи полученного подобъекта в качестве аргумента,

QVariant QAxBase::asVariant () const

Любые вызовы функций, включающие объект слова, могутвызываться с помощью функции, используя,

 QAxBase::dynamicCall ()

Например:

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

После довольно большого количества борьбы и нескольких убеждений, он работает нормально.:)

Надеюсь, это поможет тем, кто ищет похожие решения ...

1 голос
/ 28 июля 2010

Проверяли ли вы эту ссылку здесь на SO на Чтение .docx в C ++ ? Это должно указать вам правильное направление.

1 голос
/ 05 июля 2010

возможно, вы можете использовать это и записать в файл в формате odf http://doc.trolltech.com/4.6/qtextdocumentwriter.html#supportedDocumentFormats qt не знает, как выводить doc docx и т. Д., Но вы можете использовать com (activeQt) или какую-то другую библиотеку для записи в те или иныенеобходимые форматы

...