QT word文档操作实例

近日需要通过QT为项目添加word操作接口,为数据生成word文档,因此通过网上查阅并借鉴相关资料,实现了基本的功能,包括文本的填充,标题的设置,表格的插入,图片的插入等,主要通过word模板(.dot)和word书签进行操作。

一、注意事项

需要注意的是在.pro文件中添加 :QT       += widgets gui axcontainer

尚不能通过代码实现向word文档中添加书签的操作

向表格添加行操作存在少许问题,只能向定位行的上方添加行,具体到应用时,对于需要动态表格行数的情况,我的做法是先创建表头行和一行空行,之后动态添加表格行时,第一次为设置空行内容,之后的行添加则以在该行上不断插入新行完成

设置标题可根据需要修改标题类型,这里由于项目需要只设置标题3级别。

有任何疑问和建议欢迎指出

二、主要方法

所有的插入都基于.dot模板文件中已有的书签(标签,以下以标签代指),包括设置标签内容批量设置标签内容设置内容粗体设置文字大小设置标题插入图片插入表格合并单元格设置表格内容添加行

三、函数

wordengine.h文件

#ifndef WORDENGINE_H
#define WORDENGINE_H
#include <QObject>
#include <QAxObject>
#include <QAxWidget>
//#include <QThread>
class WordEngine : public QObject
{
    Q_OBJECT
public:
    explicit WordEngine(QObject *parent = 0);
    WordEngine(const QString& strFile, QObject *parent = 0);
    ~WordEngine();

    bool open(bool bVisable = false);
    bool open(const QString& strFile, bool bVisable = false);
    bool close();
    bool isOpen();
    void save();
    bool saveAs(const QString& strSaveFile);
    // 设置标签内容
    bool setMarks(const QString& strMark, const QString& strContent);
    //插入标题 3
    bool setTitle(const QString& strMark, const QString& strContent);
    // 批量设置标签
    bool setBatchMarks(QStringList &itemList,QStringList sometexts);
    // 创建表格
    void insertTable(int nStart, int nEnd, int row, int column);
    QAxObject *insertTable(QString sLabel,int row, int column);
    //合并单元格
    void MergeCells(QAxObject *table, int nStartRow,int nStartCol,int nEndRow,int nEndCol);
    //插入图片
    void insertPic(QString sLabel,const QString& picPath);
    //设置列宽
    void setColumnWidth(QAxObject *table, int column, int width);
    // 设置表格内容
    void setCellString(QAxObject *table, int row, int column, const QString& text);
    // 为表格添加行
    void addTableRow(QAxObject *table, int nRow, int rowCount);
    // 设置内容粗体  isBold控制是否粗体
    void setCellFontBold(QAxObject *table, int row, int column, bool isBold);
    // 设置文字大小
    void setCellFontSize(QAxObject *table, int row, int column, int size);
    // 在表格中插入图片
    void insertCellPic(QAxObject *table, int row,int column,const QString& picPath);

private:
    bool m_bOpened;
    QString m_strFilePath;
    QAxObject *m_wordDocuments;
    QAxObject *m_wordWidget;
//    QThread *m_thread;
signals:

public slots:

};
#endif // WORDENGINE_H

wordengine.cpp文件

#include "wordengine.h"
#include "qt_windows.h"
//#include <QDebug>
//#include <windows.h>
WordEngine::WordEngine(QObject *parent) :
    QObject(parent),
    m_bOpened(false),
    m_wordDocuments(NULL),
    m_wordWidget(NULL)
{
}

WordEngine::WordEngine(const QString& strFilePath
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值