可以使用Qt输出为.doc格式吗?

时间:2010-02-04 00:12:14

标签: c++ qt .doc odf

我正在使用Qt编写程序。我希望它输出到.doc以保留格式,但Qt支持的所有内容都是纯文本,ODF和HTML格式。 ODF和HTML将保留格式,但我必须将其复制并粘贴到.doc文件。

我希望能够保存.doc文件,而不必担心这样做。我已多次使用Google搜索,但我还没有找到解决方案。

4 个答案:

答案 0 :(得分:1)

创建有效.doc文件的唯一方法是使用Microsoft Office。它可以通过OLE自动化程序完成(更多关于这个问题 - Why are the Microsoft Office file formats so complicated? (And some workarounds) )。

Qt提供了用于处理COM对象的ActiveQt框架。因此,您可以使用其COM接口加载Word并将.html转换为.doc。当然,必须安装MS Office。

答案 1 :(得分:0)

当您说“.doc”格式时,我将假设您的意思是Microsoft Word使用的“Word 97-2003文档”格式。 Microsoft Office可以很好地打开.html文件,因此您可以走这条路。如果在您运行该程序的某台计算机上安装了Word,则可以将数据复制到剪贴板并使用自动化将Word粘贴并以.doc格式保存。

您具体使用哪种格式?

答案 2 :(得分:0)

正如您所说,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 add-on for Word 2003打开您的ODF文件。

答案 3 :(得分:0)

还有另外一种替代方案......实际上你可以称之为黑客,但这是一种简单的方式,因为我自己找到它。

  1. 创建一个类似于您的文档的HTML模板
  2. 使用Microsoft Word打开HTML模板
  3. 调整模板(某些内容可能会被错误调整)
  4. 在您想要写一些数据/文本的地方,放 某种标记,例如, #offaddress#
  5. 保存文档
  6. 将文档重命名为HTML
  7. 打开文档。该文档将包含许多Microsoft Word文档代码和内容;别担心。
  8. 复制整个代码并将其粘贴到Qt
  9. 将输出设置为Qt为.doc文件
  10. 将您的关键字(#offoutaddress#)替换为您的内容
  11. 将内容保存到扩展名为.doc
  12. 的文件

    瞧;你有你的.doc文件。