Qt QAxObject 操作Excel
2016-05-05 18:06
459 查看
1、Excel的对象层次
![](http://img.blog.csdn.net/20160505180106255)
上图是excel对象 的层次结构,1个excel就有1个Application对象,1个Application对象由多个Workbook对象组成,这些Workbook 对象由Workbooks对象统一管理,Workbook对象下可以包含若干个Worksheet,这些Worksheet对象也有一个 WorkSheets对象来统一管理,接下来是Range对象,这个对象就对应Worksheet里的表格单元了
2、QAxObject对COM对象进行了封装,QAxObject派生自QAxBase,而后者提供了一组API通过IUnknown(指针直接访问COM对象,excel也是一个COM对象,因此我们可以通过QAxObject来操作它。
3、一些基本操作都在测试工程中
测试工程http://download.csdn.net/detail/sxpsxp12/9511155
Excel VBA API http://download.csdn.net/detail/sxpsxp12/9511166
一去二三里博客 http://blog.sina.com.cn/s/blog_a6fb6cc90101gv2p.html
上图是excel对象 的层次结构,1个excel就有1个Application对象,1个Application对象由多个Workbook对象组成,这些Workbook 对象由Workbooks对象统一管理,Workbook对象下可以包含若干个Worksheet,这些Worksheet对象也有一个 WorkSheets对象来统一管理,接下来是Range对象,这个对象就对应Worksheet里的表格单元了
2、QAxObject对COM对象进行了封装,QAxObject派生自QAxBase,而后者提供了一组API通过IUnknown(指针直接访问COM对象,excel也是一个COM对象,因此我们可以通过QAxObject来操作它。
3、一些基本操作都在测试工程中
1、显示当前窗口: excel.setProperty("Visible", true); 2、更改 Excel 标题栏: excel.setProperty("Caption", "Invoke Microsoft Excel"); 3、添加新工作簿: QAxObject * workbooks = excel.querySubObject("WorkBooks"); workbooks->dynamicCall("Add"); 4、打开已存在的工作簿: workbooks->dynamicCall("Open (const QString&)", QString("c:/test.xls")); 5、获取活动工作簿: QAxObject * workbook = excel.querySubObject("ActiveWorkBook"); 6、获取所有的工作表: QAxObject * worksheets = workbook->querySubObject("WorkSheets"); 7、获取工作表数量: int intCount = worksheets->property("Count").toInt(); 8、获取第一个工作表: QAxObject * worksheet = workbook->querySubObject("Worksheets(int)", 1); 9、获取cell的值: QAxObject * range = worksheet->querySubObject("Cells(int,int)", 1, 1 ); 更多操作在测试工程中
测试工程http://download.csdn.net/detail/sxpsxp12/9511155
Excel VBA API http://download.csdn.net/detail/sxpsxp12/9511166
一去二三里博客 http://blog.sina.com.cn/s/blog_a6fb6cc90101gv2p.html
本工程的版本是Qt5.3.2 本测试工程只是测试使用,可能会有bug 本次测试存在问题:不能获取工作表的终止行/终止列,因此使用了读取固定行列数的方式进行了测试。 发现其他问题欢迎指出,非常欢迎技术方案交流。
相关文章推荐
- Cannot use object of type PHPExcel_RichText as array
- Objective-C中的Block
- Objective-C面试题(精心整理的,附答案)
- 利用NSUserdefaults来存储自定义的NSObject类及自定义类数组
- objective-C之NSData
- resharper安装后,一不小心点错了(选择了object browser)
- objective-c 获取UIview 界面宽度语句
- Objective-c 创建单例
- Object-c------@property的参数
- JavaScript学习总结(十一)——Object类详解
- Object-c------@property的内存管理
- Object-c-----set方法的内存管理
- JSON数据解析(JSONArray和JSONObject)
- Object-c------多个对象之间的内存管理
- JSONObject.toBean 和 JSONObject.fromObject
- NSUserDefaults standardUserDefaults 存储和读取
- Selective Search for Object Recognition
- JSONObject简介
- MIT deep-learning system autonomously learns to identify objects
- 对象池StackObjectPool使用