分享

Qt 对word的基本简单操作

 myallmy 2022-10-05 发布于北京

环境windows 7,Qt版本5.7.0

1.在pro文件中添加 Qt += axcontainer;(Qt4版本添加Qt += qaxcontainer)

2.模版简历:新建一个word,设置书签,保存(将后缀名改成.dot)

3.工程链接:链接:https://pan.baidu.com/s/1gpR58B8QRbaPLaKP8v_yaw 密码:aao8

4.具体代码:

.h

#ifndef MYWORD_H
#define MYWORD_H

/********************************************
*提供一个操作word的类
*该类具有以下功能:
*1.指定标签插入文字
*
*
*********************************************/


#include <QObject>
#include <QAxObject>
#include <QAxWidget>

class MyWord : public QObject
{
    Q_OBJECT
public:
    explicit MyWord(QObject *parent = 0);

private:
    QString m_fileName;//存入位置
    QAxWidget *m_pWord;
    QAxObject *m_pDocuments;
    QAxObject *m_pDocument;//

public:
    void createWordDocument();//创建word文档
    bool insertText(QString Tag, QString text);//往标签处插入文字
    void saveAndQuit(const QString &text);//保存文档并退出

signals:

public slots:
};

#endif // MYWORD_H
 

.

.cpp

#include "myword.h"
#include <QFileDialog>
#include <QDebug>

MyWord::MyWord(QObject *parent) : QObject(parent)
{
    m_pWord = NULL;
    m_pDocuments = NULL;
    m_pDocument = NULL;
}

void MyWord::createWordDocument()
{
    m_pWord = new QAxWidget("Word.Application");//新建一个word应用程序
    m_pWord->setProperty("Visible", false);//不显示窗体

    QAxObject *pDocuments = m_pWord->querySubObject("Documents");
    pDocuments->dynamicCall("Add(Qstring)", QString::fromLocal8Bit("C:/Users/chenpeng/Desktop/untitled.dot"));//模版目录

    m_pDocument = m_pWord->querySubObject("ActiveDocument");//获取当前激活的文档
}

bool MyWord::insertText(QString Tag, QString text)
{
    if (m_pDocument->isNull()) return false;//首先判断有没有获取当前激活的文档,没有则返回失败
    QAxObject *pBookMarkCode = m_pDocument->querySubObject("Bookmarks(QVariant)", Tag);//获取指定标签

    if (pBookMarkCode)
    {
        pBookMarkCode->dynamicCall("Selection");//选择该指定标签
        pBookMarkCode->querySubObject("Range")->setProperty("Text", text);//往标签处插入文字
        delete pBookMarkCode;
        return true;
    }
    return false;
}

void MyWord::saveAndQuit(const QString &text)
{
    m_pDocument->dynamicCall("SaveAs(const QString&)", QDir::toNativeSeparators(text));//“/”换成“\”;否则在windows下保存不成功
    m_pDocument->dynamicCall("Colse(boolean)", true);//关闭
    m_pDocument->dynamicCall("Quit()");//退出
}

模版:

导出word:

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多