如果你有按模版批量自动化操作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