Создание текстовых документов (.doc/.odt) через С++/Qt

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

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

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

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

Ответ 1

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

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

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

Приложение Word может быть инициализировано

QAxWidget wordApplication("Word.Application"); 

Под-объекты слова приложения могут быть получены через функцию,

QAxBase::querySubObject()

Например,

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

Чтобы передать полученный под-объект в качестве аргумента,

QVariant QAxBase::asVariant () const

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

 QAxBase::dynamicCall ()

Например,

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

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

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

Ответ 2

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