您的位置:首页 > 移动开发 > Objective-C

Qt QAxObject 操作Excel

2016-05-05 18:06 459 查看
1、Excel的对象层次



上图是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
本次测试存在问题:不能获取工作表的终止行/终止列,因此使用了读取固定行列数的方式进行了测试。
发现其他问题欢迎指出,非常欢迎技术方案交流。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: