QT C++ 基于word模板 在书签位置写入文字和图片

如果你有按模版批量自动化操作word文件的需求,那么本文能给你一定的帮助。

它能满足你程序自动化生成报表的需求。常常用于上位机、测试仪器的软件中。

需要你你自己做个word模版文档,添加2个书签。点按钮,会按照你的模板文档生成一个同样的文档,在书签的位置添加(替换)文字和图片,从而实现自动批量化操作。

QT6.2.4 MSVC2019 调试通过。

在文章的最后列出了代码下载链接。

但是从打开文件到写完文件,需要6秒左右时间,哪位有好的方案可以缩短时间。

//1.界面

//界面很简单,就一个写操作的按钮。

//2.头文件

//--------------------------------------------------------------------------------------------------------------

#ifndef WIDGET_H

#define WIDGET_H

#include <QWidget>
#include <QPushButton>
#include <QVBoxLayout>

#include <ActiveQt/QAxObject>
#include <ActiveQt/QAxWidget>

#include "CWordOperation.h"

QT_BEGIN_NAMESPACE

namespace Ui {

class Widget;

}

QT_END_NAMESPACE

class Widget : public QWidget

{

Q_OBJECT

public:

Widget(QWidget *parent = nullptr);

~Widget();

void initUI();
QPushButton* btn_write ;

private:

Ui::Widget *ui;

CWordOperation opt;

private slots:

void btn_write_click();

};

#endif // WIDGET_H

//----------------------------------------------------------------------------------------------------------------

//3.cpp文件

#include "widget.h"

#include "ui_widget.h"

Widget::Widget(QWidget *parent)

: QWidget(parent)

, ui(new Ui::Widget)

{

ui->setupUi(this);

initUI();

}

void Widget::initUI()

{

QVBoxLayout* vlayout = new QVBoxLayout();

btn_write = new QPushButton(this);

btn_write->setText("写入word文档");

btn_write->setFixedWidth(100);

vlayout->addWidget(btn_write);

setLayout(vlayout);

QObject::connect(btn_write, &QPushButton::clicked,this,&Widget::btn_write_click);

}

void Widget::btn_write_click()

{

//qDebug()<<"void Widget::btn_write_click()";

opt.openFile("d:/word5.docx", false);

// 添加文字

opt.appendBookMarksText("bookmark1", "Lei_Jun");//书签位置替换文字

// 添加图片

//String tempFilePath = "d:/output/LeiJun.png";//labview.jpeg

QString tempFilePath = "d:/output/labview.jpeg";//labview.jpeg

opt.replaceBookmarkWithImage("bookmark2", tempFilePath);//书签位置替换图片

opt.saveAs(u8"d:/output/output.docx");

opt.closeFalse();

}

Widget::~Widget()

{

delete ui;

}

//---------------------------------------------------------------------------------------------------------------------

//4.CWordOperation类

//写文字的函数原型:

//bool CWordOperation::appendBookMarksText(const QString & strBookmark, const QString & strText)

//写图片的函数原型:

bool CWordOperation::appendBookMarksText(const QString & strBookmark, const QString & strText)

//下载链接

https://download.csdn.net/download/weixin_39926429/89377300

//5.参考代码下载链接

https://download.csdn.net/download/weixin_39926429/89377344

//6.word添加书签的方法

图1-添加书签示意图

分5步:

第1步:光标移动到合适的位置

第2步:点菜单的"插入"

第3步:点菜单的书签,弹出一个框

第4步:对话框的最上面的文本框内输入"书签名",我输入的是bookmark1

第5步:点添加按钮,对话框关闭,添加了书签。

完了保存和关闭文档。就已经生成了模版。

说明:可以看到我添加了2个书签,"bookmark1"、"bookmark2"

它是个字符串

word模板文件下载链接

https://download.csdn.net/download/weixin_39926429/89377592

相关推荐
胡萝卜3.010 分钟前
深入理解栈与队列:核心特性与实战应用
c++·学习·queue·stack·stack和queue的使用
碰大点11 分钟前
Ubuntu 16.04交叉编译arm-linux-gnueabihf的QT5.6.2
linux·arm开发·qt·ubuntu·arm-linux
祁同伟.27 分钟前
【OJ】二叉树的经典OJ题
数据结构·c++·算法·容器·stl
mit6.82430 分钟前
list
c++
bin915332 分钟前
AI工具赋能Python开发者:项目开发中的创意守护与效率革命
开发语言·人工智能·python·工具·ai工具
被放养的研究生35 分钟前
Python常用的一些语句
开发语言·python
满天星830357735 分钟前
【C++/STL】哈希表的模拟实现+封装
c++·哈希算法·散列表
fox_lht3 小时前
第一章 不可变的变量
开发语言·后端·rust
骁的小小站4 小时前
Verilator 和 GTKwave联合仿真
开发语言·c++·经验分享·笔记·学习·fpga开发
心灵宝贝6 小时前
申威架构ky10安装php-7.2.10.rpm详细步骤(国产麒麟系统64位)
开发语言·php