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

相关推荐
moxiaoran57536 分钟前
Go语言的文件操作
开发语言·后端·golang
水饺编程8 分钟前
第4章,[标签 Win32] :文本的格式化,等待完善
c语言·c++·windows·visual studio
我命由我123459 分钟前
Android 开发问题:Duplicate class android.support.v4.app.INotificationSideChannel...
android·java·开发语言·java-ee·android studio·android-studio·android runtime
似霰13 分钟前
Android 平台智能指针使用与分析
android·c++
qq_4017004116 分钟前
Qt开发过程中遇到哪些经典的bug
qt·bug
小白学大数据20 分钟前
Python 进阶爬虫:解析知识星球 API
开发语言·爬虫·python
赴前尘22 分钟前
记一次golang进程执行卡住的问题排查
开发语言·后端·golang
whale fall23 分钟前
如何在同一台电脑里安装32 位 Python 和 64 位 Python
开发语言·笔记·python·学习
SNAKEpc1213825 分钟前
PyQtGraph应用(五):k线回放复盘功能实现
python·qt·pyqt
阿猿收手吧!32 分钟前
【C++】实现自旋锁:三种高效实现与实战指南
服务器·网络·c++