在Qt中解决word书签中只能从其后面插入文本的问题

在Qt中导出word文档时,从网上看,一般采用模板加书签的方式,但在书签处插入文本时默认插到其后面, 其实,对于编程而言,将文本插到其前面更方便,网上搜了好久也未找到相应的解决方法, 最后还是自己想到了一种可行的方法,列出以供参考。   

bool AutomaticTest::insertText(QString sLabel, QString sText)

{

    if(!m_pWordApp)

    {

        return false;

    }

    //获取文档中名字为sLabel的标签

    QAxObject *pBookmark = m_pActiveDocument->querySubObject("Bookmarks(QString)",sLabel);

    if(pBookmark)

    {

        pBookmark->dynamicCall("Select(void)"); //选择该书签

        //pBookmark->querySubObject("Range")->setProperty("Text",sText); //插入文字,默认插到书签的后面

        //pBookmark->dynamicCall("InsertBefore(QString)", sText); //不支持

        QAxObject* selection = m_pWordApp->querySubObject("Selection"); //获得选中区域

        selection->dynamicCall("TypeText(const QString&)", sText); //插入文字

        selection->dynamicCall("TypeParagraph(void)");//插入回车

        delete pBookmark;

        //不能将所写的文字插到书签的后面,那么就移动书签到所写的文字后面

        QAxObject *pBookmarks = m_pActiveDocument->querySubObject("Bookmarks"); //获取所有的书签

        QList<QVariant> list;

        list << sLabel << m_pWordApp->querySubObject("Selection")->property("Range"); //指定要移动的书签名和移动位置

        pBookmarks->dynamicCall("Add(QString, QVariant)", list); 

        return true;

    }

    else

    {

        return false;

    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值