界面如下:

.pro文件中要加入以下代码


CONFIG += qaxcontainer

.h文件如下

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>#include <QAxWidget>
#include <QAxObject>#define FilePath "C:/temp/" //存放路径namespace Ui {class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();private slots://读取按钮点击槽函数void on_btn_read_clicked();//写入按钮点击槽函数void on_btn_write_clicked();//退出按钮点击槽函数void on_btn_exit_clicked();private:Ui::Widget *ui;QAxObject *myword;      //Word应用程序指针QAxObject *mydocs;      //文档集指针QAxObject *mydoc;       //文档指针QAxObject *selection;   //Selection指针
};#endif // WIDGET_H

.cpp文件

#include "widget.h"
#include "ui_widget.h"#include <QMessageBox>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}//读取按钮点击槽函数
void Widget::on_btn_read_clicked()
{myword = new QAxObject("Word.Application");mydocs = myword->querySubObject("Documents");if (mydocs == nullptr){QMessageBox::information(this, QString("标题"), QString("获取所有工作文档失败"));return;}QString fileName="test.docx";QString path=QString(FilePath)+fileName;//打开一个Word文档,这里调用的是Documents对象的open方法mydocs->dynamicCall("Open(const QVariant&)",QVariant(path));//获取当前word文档对象mydoc = myword->querySubObject("ActiveDocument");if (mydoc == nullptr){QMessageBox::information(this, QString( "标题"), QString("获取当前文档失败"));return;}//这里是把word文档的内容全部选中。//通过不带参数的range方法选中整个文档内容selection = mydoc->querySubObject("Range()");//然后获取选中的word文档内容QString str = selection->property("Text").toString();//显示到文本框ui->textEdit->setText(str);//关闭文档mydoc->dynamicCall("Close()");delete mydoc;mydoc = NULL;//退出程序myword->dynamicCall("Quit()");delete myword;myword = NULL;
}//写入按钮点击槽函数
void Widget::on_btn_write_clicked()
{//获取文本框内容QString str=ui->textEdit->toPlainText();QString fileName="test.docx";QString path=QString(FilePath)+fileName;//隐式的打开一个word应用程序myword = new QAxObject("Word.Application");myword->setProperty("Visible", false);//获取所有工作文档mydocs = myword->querySubObject("Documents");if (mydocs == nullptr){QMessageBox::information(this, QString("标题"), QString("获取所有工作文档失败"));return;}//创建一个word文档mydocs->dynamicCall("Add (void)");//获取当前激活的文档mydoc = myword->querySubObject("ActiveDocument");if (mydoc == nullptr){QMessageBox::information(this, QString("标题"), QString("获取当前激活文档失败"));return;};//写入文件内容selection = myword->querySubObject("Selection");selection->dynamicCall("TypeText(const QString&)",str);//设置保存QVariant newFileName(path); //存放位置和名称QVariant fileFormat(16); //文件格式  1——doc;16——docxQVariant LockComments(false);//如果为True,则锁定文档以获取注释。默认值为False。QVariant Password("");     //设置打开密码QVariant recent(true);//如果为True,则将文档添加到“文件”菜单上最近使用的文件列表中。默认值为True。QVariant writePassword("");//用于保存文档更改的密码字符串QVariant ReadOnlyRecommended(false);//如果为True,则无论何时打开文档,Word都将处于只读状态。默认值为False。mydoc->querySubObject("SaveAs(const QVariant&, const QVariant&,const QVariant&, const QVariant&, const QVariant&, const QVariant&,const QVariant&)",newFileName, fileFormat, LockComments, Password, recent, writePassword, ReadOnlyRecommended);//关闭文档mydoc->dynamicCall("Close(boolean)", true);delete mydoc;mydoc = NULL;//退出程序myword->dynamicCall("Quit(void)");delete myword;myword = NULL;
}//退出按钮点击槽函数
void Widget::on_btn_exit_clicked()
{close();
}

更多word文件格式参照以下网址
https://docs.microsoft.com/en-us/office/vba/api/word.wdsaveformat
saveas方法介绍参照以下网址
https://docs.microsoft.com/en-us/office/vba/api/word.saveas2

QT进行Word文档读写相关推荐

  1. Qt对word文档操作总结

    Qt对word文档操作总结 近期在使用Qt对word进行读写操作时候遇到很多问题,对于Qt内部没有很好的库函数可以使用.office官网上的文档只有VBA的示例,没有Qt的语法例子.在这里作者介绍了一 ...

  2. QT读取Word文档

    Word文档读取 开发工具与关键技术:QtCreator.C++ 作者:何任贤 撰写时间:2020年06月02日 Word文档读取 我们先要在工程文件加入 QT += axcontainer 我们要用 ...

  3. Qt实现word文档转html

    最近在做编辑器,要读取Word文档,但是QT的QTextEdit没办法直接读取,网上查了好多资料也没有找到解决办法,只好自己动手,现在发出来,给大家提供个方便.(doc和docx格式均可以) 主要原理 ...

  4. 实现QT打开Word文档

    通过QT实现点击按钮打开Word文档,需要用到QProcess,在程序中加入#include <QProcess>. 代码: .h文件 #ifndef SIDEBAR_H #define ...

  5. Qt操作Word文档

    Qt提供QAxObject操作Word文档,实现写入文档 准备工作 1.Qt pro文件中加入QT += axcontainer 2.电脑上至少有Word或者WPS 操作Word /********* ...

  6. QT 生成word文档

    这篇文章在原博客上加上了一些原博主没有写出的一些细节访问的东西,(间接抄袭.......) 原博客 :http://blog.csdn.net/zhangfuliang123/article/deta ...

  7. QT打开Word 文档

    转载:QT如何用QProcess打开一个word文档?_百度知道 (baidu.com) 坑死了,网上好多类似的,但是不说清楚,对新手太不友好了! 需要加上#include <QProcess& ...

  8. 【QT】word文档操作实例——根据word模板生成word报表

    文章目录 引言 一.word模板准备 二.WordDemo实现 1.mainwindow.ui 2.mainwindow.h 3.mainwindow.cpp 三.实现效果 引言 在QT5.3中,在. ...

  9. Qt实现Word文档界面样式--QtitanRibbon

    QtitanRibbon - Microsoft Ribbon for Nokia's Qt概念的实现 QtitanRibbon组件实现了Microsoft Ribbon for Qt的概念,设计用于 ...

  10. 用Qt操作Word文档

    由于项目需要通过dot模板导出doc的文档,所以就查了资料写了一个操作word 的类,只实现了部分功能,其代码如下: #include "wordengine.h" #includ ...

最新文章

  1. php CI框架输出空行问题排查
  2. 阿里巴巴人工智能实验室“黄”了
  3. 1.17 StringBuffer类详解
  4. 如何 0 改造,让单体/微服务应用成为 Serverless Application
  5. 科大星云诗社动态20201210
  6. 麒麟970怎么升级鸿蒙系统,华为这些手机无法升级鸿蒙系统,搭载麒麟970,只能遗憾错过...
  7. Java往事之《返回整数的长度》
  8. HDU 4535 吉哥系列故事——礼尚往来
  9. SH760模态分析-多种解析与数字计算方法
  10. jggrid标红列和动态标红行的几种方法
  11. RVC使用指南(一)-基本配置
  12. 京东月薪8万招聘HR,岗位要求只有这3个字
  13. 1.nodejs介绍
  14. k8s学习: ErrImagePull 和 ImagePullBackOff 怎么办?
  15. c语言 万年历实验流程图,万年历算法(万年历算法流程图)
  16. HTTP和HTTPS的工作原理及区别
  17. 浅谈matlab中fftshift的作用
  18. PS零基础入门系列-PS图层样式案例实用技巧
  19. 听刘万祥老师讲“竖向折线图”、“点图”画法
  20. 适应Linux32位的qq,Ubuntu 安装 QQ (简易安装 适合32位操作系统)

热门文章

  1. python列表元素按条件分组_python-按值分组列表
  2. CF632E Thief in a Shop 题解
  3. JAVA 编程语言基础笔记
  4. 转载:ant自动构建
  5. 算法与数据结构 03 匹配问题
  6. python模拟计算器程序代码_python作业:模拟计算器
  7. 万恶的错误代码0xc000000e
  8. 2018 ICPC SouthEastern European 【Fishermen】
  9. 15种方法活力一整天
  10. 计算机画图软件技巧,CAD绘图技巧(一)—速度篇