【问题标题】:Possible to output to .doc format using Qt?可以使用 Qt 输出为 .doc 格式吗?
【发布时间】:2010-02-04 00:12:13
【问题描述】:

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

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

【问题讨论】:

    标签: c++ qt .doc odf


    【解决方案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。

    【讨论】:

      【解决方案2】:

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

      您具体使用什么格式?

      【讨论】:

      • 我希望使用您所说的 Word 97-2003 文档格式。我做了一些研究,发现 ODF 格式是基于 XML 的,就像新的 Word .docx 格式一样。但是,我仍然无法找到将 .odt 文件转换为 .docx 的方法。该应用程序将是跨平台的,因此在 mac/linux 机器上,ODF 文件会很好,但对于 Windows 机器,我需要一种让 Word 2003 打开文件的方法。 Word 2007 实际会打开 .odt 文件,但我希望它可以在两个版本的 Word 上工作。谢谢
      【解决方案3】:

      如您所说,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 文件。

      【讨论】:

        【解决方案4】:

        对此还有另一种选择...实际上您可以将其称为黑客攻击,但我自己发现它是一种简单的方法。

        1. 创建一个看起来像您的文档的 HTML 模板
        2. 使用 Microsoft Word 打开 HTML 模板
        3. 调整模板(有些地方可能调整不当)
        4. 在你想写一些数据/文本的地方,把 某种标记,例如#offaddress#
        5. 保存文档
        6. 将文档重命名为 HTML
        7. 打开文档。该文档将包含大量 Microsoft Word 文档代码和内容;别担心。
        8. 复制整个代码并将其粘贴到您的 Qt 中
        9. 将 Qt 的输出设置为 .doc 文件
        10. 用您的内容替换您的关键字 (#offaddress#)
        11. 将内容保存到扩展名为 .doc 的文件中

        瞧;你有你的 .doc 文件。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-12-30
          • 1970-01-01
          • 2012-10-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多