Qt+VS环境、QtCreator分别操作Office使用

301 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第4天,点击查看活动详情

这几日闲来无事看到了Qt可以直接展示word文档、Excel文档,并实现数据处理功能,就想来学习下,顺便将我的学习新的纪录下来。

当我刚开始做MFC项目时,其实已经用到了在程序中打开文档的功能,但是MFC对于有些文件的打开实在是太麻烦了,当初只是用了进程的方式打开。

现在,恰好项目不紧张,我就想来学习下Qt环境下如何展示Ofiice文件。

下面,我就对两种不同的环境进行说明,有需要的同学们可以自行选择,其它的方式我也无能为力了,因为开发中只涉及到了这两种方式。

1:QtCreator环境操作Office

第一步:配置需要的环境

在项目的pro文件中添加下面这句话:

QT+=axcontainer

不需要添加第三方库,直接将库配置上就可以了。

第二步:代码应用

QAxWidget *mywidget = new QAxWidget("Excel.Application", ui->widgetWord);
mywidget->dynamicCall("SetVisible(bool Visible)","false"); //隐藏不显示office窗体
mywidget->setProperty("DisplayAlerts", false); //屏蔽office的警告消息框
QRectF rectWidget = ui->widgetWord->geometry();
mywidget->setGeometry(rectWidget.x(), rectWidget.y(), rectWidget.width(), rectWidget.height());
mywidget->setControl("F:\\123.xlsx");
mywidget->show();

直接粘贴到程序中就可以展示中需要加载的excel表格了。

在Qt中可以支持适时地显示和预览Office文档的内容,主要是通过我们今天使用的控件QAxWidget对象来实现的。

实现机制:

将桌面程序界面上的某个Qt控件重定义包装用于显示Office文档的QAxWidget对象实例,该实例与用户程序中所启动的特定Office进行相关联,就具备了显示外部文档的增强功能。

本质上就是用Qt的组件调用外部的Microsoft Office组件,实际上在后台执行功能的仍然是Microsoft Office的COM组件。

代码讲解:

在使用Excel表格时,首先要创建Excel进行,将展示的内容绑定到Qt的控件上进行展示,可以用QLabel控件也可以使用QWidget控件。

QAxWidget *mywidget = new QAxWidget("Excel.Application", ui->widgetWord);

显示效果如下:

Screenshot_20220424090002.png

2:Qt+VS混搭环境操作Office

代码实现方式与QtCreator中的一致,唯一的区别就是对插件的配置。

那么,在VS环境中使用Qt的组件该如何配置呢?

word操作属性配置.png

图片中的ActiveQt container == axcontainer

大家记住一定不要记混了,有些看到属性配置没有跟QtCreator中一致的关键词就认为没有,其实不是,只是换了一个名称而已。

除此属性配置之外,其余与QtCreator使用完全一致。这里我也就不再详细说明了。

我是中国好公民st,一名C++开发程序猿~