一个Qt的项目,项目中要求生成doc格式的报表,查阅发现这方面的资料比较少,通过有限的资料,自己研究了一下午,终于搞明白了一些。

Qt中的ActiveQt框架

控制word主要使用的两个类:QAxWidget和QAxObject

Qt通过QAxWidget和QAxObject来使用ActiveX控件

其中QAxWidget扮演着ActiveX控制器的角色

而QAxObject扮演着COM对象容器的角色

 

程序中必要的引用和配置文件更改

需要引用如下头文件

在.pro文件中需要加入如下语句:

 

一个写word文件的例子

程序如下

上面的程序注释写的比较详细了,就不在过多的解释了。只说两个地方:

 对象函数的调用

对象属性的设置

 

得到COM的类、对象以及对象的函数和属性的方法

第一步,得到word宏的VBA代码

方法就是在word中录制操作的宏,然后查看宏的内容。

注意要点是要尽量保证操作的有效性,使宏尽可能的简介。

下面是一个插入一个图片,并设置阴影的宏。

 

第二步,从宏中解析出想要的信息

先以第一句代码为例:

selection应该是指选中当前选中的位置,可以用Range和select等函数定位。

倒序读取这行的内容,AddPicture 后面是空格和一些属性,所以AddPicture 是一个函数,而空格后面则是函数对应的参数

InlineShapes 就是拥有函数 AddPicture 的对象

我们就可以用如下语句创建一个InlineShapes 的对象,并调用使用他的方法

再看最后一句:

selection如上所示

依旧倒序读取,最后是一个赋值操作,所以Type是一个属性。而前面每一个被“.”隔开的变量都是一个对象。

我们可以用如下语句完成上述VB的功能:

第三步,获取类的API文档

当我们想系统的了解一个类的时候,最方便的就是读API文档。幸运的是,Qt能够生成COM的API

方法如下:

生成的html文件阅读起来十分方便。

 使用word模版(.dot)和书签

word有模版和标签机制,可以方便的创建一个框架并且标记要插入内容的位置,非常便于生成word文件。

利用word模版,标记书签(bookmark),然后通过Qt读取书签,在相应位置插入内容,将大大简化Qt的代码。

使用书签的方法与使用其他的对象没有大的区别,代码如下:

以上就是我对Qt生成word文件的初步了解

另附一个msdn关于VB和C#的页面:http://msdn.microsoft.com/zh-cn/library/y1xatbkd%28v=vs.80%29.aspx

转载自:http://blog.csdn.net/vinson0526/article/details/11094877

另,文件路径最好使用静态函数处理 一下。