【QT】word文档操作实例 |
您所在的位置:网站首页 › 创建word模版 › 【QT】word文档操作实例 |
文章目录
引言一、word模板准备二、WordDemo实现1、mainwindow.ui2、mainwindow.h3、mainwindow.cpp
三、实现效果
引言
在QT5.3中,在.pro使用的是:QT += widgets gui axcontainer 来使用ActiveQt框架中的QAxContainer模块(Qt4版本添加Qt += qaxcontainer)=),所以在项目在头文件中包含QAxWidget和QAxObject。 简单介绍ActiveQt框架由两个模块组成: QAxContainer模块允许我们使用COM对象并且可以在Qt应用程序中嵌入QActive控件。 QAxServer模块允许我们导出使用Qt编写的自定义的COM对象和Active控件。 一、word模板准备模板的准备至关重要,而其中更重要的是模板中书签的设置命名,因为接下来的程序代码中,程序就是根据书签的名字,来定位word文档中的位置,从而进行数据的插入修改 当设计好表格,并且设计好书签的名称,便将文档保存为 .dot格式 二、WordDemo实现 代码中都有详尽的注释 1、mainwindow.ui 2、mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); void init_UI(); //初始化界面函数 void clear_UI(); //重置界面函数 private slots: void reshow(); //重置界面的槽函数 void create_word(); //创建报表的槽函数 private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H 3、mainwindow.cpp #include "mainwindow.h" #include "ui_mainwindow.h" #include #include #include #include #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); init_UI(); connect(ui->btu_create,SIGNAL(clicked(bool)),this,SLOT(create_word())); connect(ui->btu_create,SIGNAL(clicked(bool)), this, SLOT(reshow())); } MainWindow::~MainWindow() { delete ui; } void MainWindow::create_word() { //新建一个word应用程序 QAxWidget *word = new QAxWidget("Word.Application",0,Qt::MSWindowsOwnDC); //并设置为不可见 word->setProperty("Visible",false); //获取所有的工作文档 QAxObject *documents = word->querySubObject("Documents"); //以test2.dot为模板新建一个文档 documents->dynamicCall("Add(QString)",QString::fromLocal8Bit("E:/MyQtWorkSpace/Word/test2.dot")); //获取当前激活的文档 QAxObject *document = word->querySubObject("ActiveDocument"); //获取文档中名字为equ的标签 QAxObject *bookmark_equ = document->querySubObject("Bookmarks(QVariant)","equ"); //选中标签,将字符textg插入到标签位置 if(!bookmark_equ->isNull()) { QString sText=ui->lineEdit_equ->text(); //此处为替换内容 qDebug()querySubObject("Range")->setProperty("Text",sText); //进行替换操作 } //获取文档中名字为temp的标签 QAxObject *bookmark_temp = document->querySubObject("Bookmarks(QVariant)","temp"); //选中标签,将字符textg插入到标签位置 if(!bookmark_equ->isNull()) { QString pText=ui->lineEdit_temp->text(); //此处为替换内容 bookmark_temp->dynamicCall("Select(void)"); //选中要选中的区域 bookmark_temp->querySubObject("Range")->setProperty("Text",pText); //进行替换操作 } //获取文档中名字为bas的标签 QAxObject *bookmark_bas = document->querySubObject("Bookmarks(QVariant)","bas"); //选中标签,将字符textg插入到标签位置 if(!bookmark_equ->isNull()) { QString bText=ui->lineEdit_bas->text(); //此处为替换内容 bookmark_bas->dynamicCall("Select(void)"); //选中要选中的区域 bookmark_bas->querySubObject("Range")->setProperty("Text",bText); //进行替换操作 } qDebug() for(int j=1;j return; } document->dynamicCall("SaveAs(const QString&))",QDir::toNativeSeparators(pathsave)); document->dynamicCall("Close (boolean)",false); word->dynamicCall("Quit()"); QMessageBox::warning(this,"完成","文件已经保存",QMessageBox::Yes); } void MainWindow::init_UI() { int col = 5; int row = 4; ui->tableWidget->setColumnCount(col); ui->tableWidget->setRowCount(row); QStringList header; //表头写入表格 header ui->tableWidget->setItem(i,0,new QTableWidgetItem(num[i])); } QString data[4][4]={{"5","7","8","6"}, {"4","6","5","9"}, {"7","5","5","6"}, {"8","3","4","6"}}; for(int i=0;i ui->tableWidget->setItem(i,j,new QTableWidgetItem(data[i][j])); } } } void MainWindow::clear_UI() { ui->lineEdit_bas->clear(); ui->lineEdit_equ->clear(); ui->lineEdit_temp->clear(); } void MainWindow::reshow() { clear_UI(); this->show(); } 三、实现效果修改数据 点击生成 点击保存 点击Yes 完成效果
如有不足之处,还望指正 1。 如果对您有帮助可以点赞、收藏、关注,将会是我最大的动力 ↩︎ |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |