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

相关推荐
烨然若神人~8 分钟前
算法第24天|93.复原IP地址、 78.子集、 90.子集II
java·开发语言·算法
什么半岛铁盒19 分钟前
Linux网络基础全面解析:从协议分层到局域网通信原理
linux·服务器·网络·c++
Da_秀31 分钟前
信奥赛CSP动态规划入门-最小硬币问题
数据结构·c++·笔记·算法·动态规划
爬虫程序猿32 分钟前
如何保存解析后的商品信息?
开发语言·python
fashia1 小时前
Java转Go日记(四十二):错误处理
开发语言·后端·golang·go
wktomo1 小时前
GO语言学习(六)
开发语言·学习·golang
tadus_zeng1 小时前
C/C++ 整数类型的长度
c语言·开发语言·c++
明月看潮生1 小时前
青少年编程与数学 02-019 Rust 编程基础 20课题、面向对象
开发语言·青少年编程·rust·编程与数学
Python测试之道2 小时前
测试开发面试题:Python高级特性通俗讲解与实战解析
开发语言·python
我想吃余2 小时前
【C++篇】揭秘STL vector:高效动态数组的深度解析(从使用到模拟实现)
开发语言·c++·笔记·学习·stl