Qt QAxObject 操作Excel

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
本次測試存在問題:不能獲取工作表的終止行/終止列,因此使用了讀取固定行列數的方式進行了測試。
發現其他問題歡迎指出,非常歡迎技術方案交流。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章