Создание текстовых документов (.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) или другую библиотеку для записи в тех или иных форматах, которые вам нужны.
Ответ 3
Вы проверили эту ссылку здесь, на SO по чтению .docx в С++? Он должен указать вам в правильном направлении.