哪里可以找到Qt操作Word文档?

问题描述 投票:0回答:1

Qt操作Word示例

QAxObject   *document = documents->querySubObject("Open(const QString&, bool)", inFile1, true);
QAxObject   *selection = axObject.querySubObject("Selection");
...
document->dynamicCall("SaveAs(const QString&)", outFile);
document->dynamicCall("Close()");

我不是在谈论这些Qt函数

querySubObject
dynamicCall
。我说的是 Word / ActiveX 函数
Open
SaveAs
Close
...

我只能在一些示例代码片段中瞥见这些功能的一小部分。在哪里可以找到完整的文档?

看起来是ms-word的功能,但是考虑到

Open(const QString&, bool)
,有
QString
,这就打消了这个想法。

c++ windows qt ms-word word-interop
1个回答
1
投票

您链接的问题已经回答了您的问题,但是看到接受的答案是如何完全没有解释的,让我们首先看看那里缺少什么,然后是正确的解决方案(接受的答案不是)。


你需要知道的是Qt提供了转换函数(在ActiveQt的几个文件中)。例如,将

QString
转换为
ActiveX
BSTR
:

static inline BSTR QStringToBSTR(const QString &str)
{
    return SysAllocStringLen(reinterpret_cast<const OLECHAR*>(str.unicode()), UINT(str.length()));
}

QAxBase::querySubObject
重要的是其他地方:函数对
QVariantToVARIANT
VARIANTToQVariant
管理从 Qt 到 ActiveX 类型的转换以及所有方法参数的转换。


正确的解决方案是使用同一问题中未接受的投票最多的答案,即:

  1. 在 WinWord 上运行 dumpcpp.exe。它创建使用 Word 所需的标题,就像使用 VBA 一样简单。
  2. 使用
    Word
    命名空间中的类,就像在 VBA 中一样。

在上面投票最多的答案和 Qt 文档之间,应该清楚这种方法有多简单。

© www.soinside.com 2019 - 2024. All rights reserved.