首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换Word文档QAxObject QT / C++中的字段值

替换Word文档QAxObject QT / C++中的字段值
EN

Stack Overflow用户
提问于 2020-11-17 12:10:01
回答 1查看 296关注 0票数 0

我对QT非常陌生,我的任务是以编程方式更新word文档中的一些字段值,目前我可以很好地替换word文档中的文本,但是当字段值位于对象(表或任何东西)内时,它不起作用,我的代码是:

代码语言:javascript
复制
    QString     outFile("D:\\#test files\\output.docx");
    QString     inFile1("D:\\#test files\\input.docx");
    QAxObject   axObject("Word.Application");
    QAxObject* documents = axObject.querySubObject("Documents");
    QAxObject* document = documents->querySubObject("Open(const QString&, bool)", inFile1, true);
    QAxObject* selection = axObject.querySubObject("Selection");
    auto find = selection->querySubObject("Find");
    QString sOld = "${name}";
    QString sNew = "Ibrahim";
    bool bMatchCase = false;
    bool bMatchWholeWord = false;
    bool bMatchWildCards = false;
    bool bReplaceAll = true;
    QVariantList vl = { sOld, bMatchCase, bMatchWholeWord, bMatchWildCards, false, false, true, 1, false, sNew, bReplaceAll ? "2" : "1" };
    find->dynamicCall("Execute(QString,bool,bool,bool,bool,bool,bool,int,bool,QString,int)", vl);
    document->dynamicCall("SaveAs(const QString&)", outFile);
    document->dynamicCall("Close()");
    axObject.dynamicCall("Quit()");

如果你能帮忙,那就太棒了:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-19 13:27:57

如果您可以更改目标文件的性质,那么最好用真正的Word DocVariable或DocProperty字段替换目标。然后使用代码更改变量或属性,并更新文档中的相关字段。一些文档属性(在“快速部件”>“文档属性”菜单下)映射到XML数据点,如果使用这些属性,则不需要更新字段。

占位符可以是(1) DocVariable字段或(2) DocProperty字段。可以使用代码更改变量或属性,然后更新字段。

您还可以使用内置映射的文档属性内容控件之一,在这种情况下,如果更改属性,则不需要更新字段。它是自动的。在我的相关页面中有更多的介绍:重复数据映射文档属性内容控件或其他映射的内容控件

下面是关于使用vba访问文档属性的两个Word MVP页面的链接。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64875040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档