【发布时间】:2010-02-04 00:12:13
【问题描述】:
我正在使用 Qt 编写程序。我希望它输出到 .doc 以保留格式,但 Qt 支持的只是纯文本、ODF 和 HTML 格式。 ODF 和 HTML 将保留格式,但我必须将其复制并粘贴到 .doc 文件中。
我希望能够保存 .doc 文件而不必担心这样做。我用谷歌搜索了很多次,但我没有找到解决方案。
【问题讨论】:
我正在使用 Qt 编写程序。我希望它输出到 .doc 以保留格式,但 Qt 支持的只是纯文本、ODF 和 HTML 格式。 ODF 和 HTML 将保留格式,但我必须将其复制并粘贴到 .doc 文件中。
我希望能够保存 .doc 文件而不必担心这样做。我用谷歌搜索了很多次,但我没有找到解决方案。
【问题讨论】:
创建有效 .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。
【讨论】:
当您说“.doc”格式时,我假设您指的是 Microsoft Word 使用的“Word 97-2003 文档”格式。 Microsoft Office 可以很好地打开 .html 文件,所以你可以走这条路。如果 Word 安装在您运行程序的某台计算机上,您可以将数据复制到剪贴板并使用自动化让 Word 将其粘贴并以 .doc 格式保存。
您具体使用什么格式?
【讨论】:
如您所说,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 文件。
【讨论】:
对此还有另一种选择...实际上您可以将其称为黑客攻击,但我自己发现它是一种简单的方法。
瞧;你有你的 .doc 文件。
【讨论】: