Возможен ли вывод в формат .doc с использованием Qt? - PullRequest
2 голосов
/ 04 февраля 2010

Я пишу программу с использованием Qt. Я хочу, чтобы он выводил в .doc для сохранения форматирования, но все, что поддерживается Qt, - это простой текст, ODF и HTML-форматы. ODF и HTML сохранят форматирование, но тогда мне придется скопировать и вставить его в файл .doc.

Я хочу сохранить файл .doc и не беспокоиться об этом. Я гуглял это много раз, но я не нашел решения.

Ответы [ 4 ]

1 голос
/ 07 февраля 2010

Единственный способ создать действительный файл .doc - использовать Microsoft Office.Это можно сделать из вашей программы с помощью OLE Automation (подробнее об этой проблеме здесь - Почему форматы файлов Microsoft Office такие сложные? (И некоторые обходные пути) ).

Qt предоставляет платформу ActiveQt для работы с COM-объектами.Таким образом, вы можете загрузить Word и конвертировать .html в .doc, используя его интерфейс COM.Конечно, MS Office должен быть установлен.

0 голосов
/ 05 октября 2010

Есть и другая альтернатива этому ... Практически вы можете назвать это хакерством, но это своего рода простой способ, поскольку я нахожу это для себя.

  1. Создайте шаблон HTML, который выглядит как ваш документ
  2. Открыть шаблон HTML с помощью Microsoft Word
  3. Настройте шаблон (некоторые вещи могут быть неправильно отрегулированы)
  4. В местах, где вы хотели бы написать некоторые данные / текст, поставьте какой-то маркер, например # Offaddress #
  5. Сохранить документ
  6. Переименование документа обратно в HTML
  7. Откройте документ. Документ будет содержать много кодов документов Microsoft Word и прочее; не волнуйся.
  8. Скопируйте весь код и вставьте его в свой Qt
  9. Установить вывод для вашего Qt как файл .doc
  10. Замените ваши ключевые слова (# offaddress #) содержанием
  11. Сохранить содержимое в файл с расширением .doc

Вуаля; у вас есть файл .doc.

0 голосов
/ 05 февраля 2010

Как вы сказали, QTextDocumentWriter поддерживает только простой текст, форматы ODF и HTML.

Если вам нужно читать только ваш документ в Windows, вы можете создать PDF вместо попытки создания .doc:

 QPrinter printer;
 QTextDocument document;

 //TODO: Put stuff to print in your 'document'

 printer.setOutputFormat(QPrinter::PdfFormat);
 printer.setOutputFileName("/foobar/nonwritable.pdf");

 document.print( printer );

Другое возможное решение: если вам абсолютно необходимо изменить документ в Word, попробуйте надстройку ODF для Word 2003 , чтобы открыть файл ODF.

0 голосов
/ 04 февраля 2010

Когда вы говорите в формате «.doc», я предполагаю, что вы имеете в виду формат «Документ Word 97-2003», используемый Microsoft Word.Microsoft Office может нормально открывать файлы .html, чтобы вы могли пойти по этому пути.Если Word установлен на компьютере, на котором вы запускаете программу, вы можете скопировать данные в буфер обмена и использовать автоматизацию, чтобы Word вставил их и сохранил в формате .doc.

Какое форматирование вы используете?

...