QT操作Excel学习记录

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhejfl/article/details/78887878

1、QAxBase是一个提供用来初始化和访问COM对象和Active空间的API抽闲类;

2、QAxObject是一个包装了COM对象的QObject。

3、QAxWidget是一个包装了ActiveX控件的QWidget。

4、QAxScriptManager /QAxScript和QAxScriptEngin提供一个Windows脚本解释嵌入的COM对象。

QAxBase类提供了初始化和访问COM对象的API。

如果COM对象实现了IDispatch接口,那么就可像使用Qt 属性和槽函数一样使用该对象的属性和方法。方法可以连接信号,而由对象的IDispatch实现而公开的属性可以通过Qt属性系统对其读写(在Qt对象模型中QObject的子类也是QObject,可以用QObject::setProperty()和QObject::property()写和读属性)。

QAxBase实现了COM数据类型和等价的Qt数据类型之间的透明转换。但一些COM类型没有对应的Qt数据结构。

受支持的COM数据类型列在下表的的第一列,第二列是有QObject属性函数一起使用Qt类型,第三列是用于生成信号的原型的Qt类型,最后一列是用于信号和槽的输出参数的Qt类型


1、初始化COM对象——使用QAxBase::setControl()或者直接把对象的名字传递到QAxBase子类的构造函数中,初始化一个COM对象。

设置control属性来初始化COM对象,如excel是连接excel控件

指定控件——设置该属性最有效的方法是使用注册组件的UUID;

第二个法子是使用注册控件的类型(包括或不包括版本号)

最慢但最简单的方法是使用控件的全称

对于不同的情况还有其他不同的方法。

bool setControl(const QStrig& )


2、访问COM对象的API

可以通过访问COM对象的Qt API来取代COM的数据类型

方法2、call-by-Name   :用QAxBase::dynamicCall()、QAxBase::querySubObject() 和QObject::setProperty()、QObject::property() 能通过名字调用COM对象的方法和属性。

QVariant QAxBase::dynamicCall(const char *function , const QVariant &var1=QVraint(),...)

该成员方法调用COM对象的method方法,传递参数var1,var2,var,var4,var5,var6,var7,这个方法有返回值,则返回一个值,没有返回值或调用失败就返回一个无效的QVariant。

function必须是COM对象的方法的完整模型,类似于QObject::connect()的调用。

也可以传递参数在function这个字符串中

即:

excel->dynamicCall("SetVisible(bool Visible)","false"); //不显示窗体
excel->dynamicCall("SetVisible(false)");







猜你喜欢

转载自blog.csdn.net/zhejfl/article/details/78887878
今日推荐