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