QT进行Word文档读写

news/2024/11/15 5:31:34/

界面如下:
在这里插入图片描述
.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


http://www.ppmy.cn/news/291705.html

相关文章

JAVA导出Word文档工具EasyWord

介绍 基于Apache poi封装&#xff0c;在上层做了模型转换的封装&#xff0c;让使用者更加简单方便 只支持docx的导出&#xff0c;不支持doc 下面废话少说 让我们以最快的方式学会用java导出word文档 组件依赖 依赖版本备注lombok1.18.10poi5.1.0poi-ooxml5.1.0poi-scratchp…

批量将多个 Word 文档合并成一个 Word 文件

概要&#xff1a;我们经常要处理很多 Word 文档&#xff0c;有时候我们希望将多个 Word 文件都批量的合并成一个 Word 文件&#xff0c;这个时候该怎么办呢&#xff1f;现在有一种简单的方法&#xff0c;能够批量的将多个 Word 文档合并成单个 Word 文件&#xff0c;这样对于我…

Java自动生成word文档,用心看这篇就够了【重点】

1.1 概述 在网上找了好多天将数据库中信息导出到word中的解决方案&#xff0c;现在将这几天的总结分享一下。总的来说&#xff0c;Java导出word大致有5种解决方案比较。 1.2 方案比较 1、Jacob是Java-COM Bridge的缩写&#xff0c;它在Java与微软的COM组件之间构建一座桥梁。…

离线安装 oh-my-zsh 及 zsh-autosuggestion(自动命令补全和建议)

oh-my-zsh 参考 https://github.com/ohmyzsh/ohmyzsh#advanced-installation 中 Manual Installation 的步骤即可&#xff0c;不用像网上教程那样手工修改install.sh。 Manual Installation 1. Clone the repository &#xff08;从可以联网的地方先下载好&#xff0c;并改名…

Word文档误删怎样恢复?6种实用方法分享给你

如果您曾经因为没有保存微软Word文档而丢失了所有工作&#xff0c;那么您就会明白疼痛是多么明显。 幸运的是&#xff0c;自从在软盘上备份文件的黑暗时代以来&#xff0c;Word已经走过了漫长的道路。如今&#xff0c;如果您丢失了未保存的Word文档&#xff0c;可能仍然有一种…

word文档转换为md文档

1 &#xff0c; 安装软件 官网&#xff1a;Pandoc - Installing pandoc 2&#xff0c;打开cmd&#xff0c;切换到word文件所在的目录 这个不会可以自行百度不难。。。 3&#xff0c;在根文件目录下输入如下这行代码 pandoc -f docx -t markdown --extract-mediamedia -o o…

html文件在线打开word,html打开word程序 html直接打开word文档

网页中打开word,提示“无法打开word程序”。 但是正常打开w&#xff1f; 打开浏览器&#xff0c;点文件-打开&#xff0c;查找HTML文件。 操作步骤&#xff1a;1、我的电脑中双击html文件后&#xff0c;默认使用谷歌浏览器打开&#xff1b;2、右键单击html文件&#xff0c;选择…

使用Python互转pdf文档和word文档

1 前言 一日&#xff0c;欲将手头上的一份pdf文档转换成word文档。先试着用XX办公软件试了下&#xff0c;微信扫码登录后&#xff0c;在PDF转换界面&#xff0c;选中文档&#xff0c;点击“开始转换”&#xff0c;弹出提示对话框&#xff1a;免费的只给转换5页文档&#xff0c…