方法是:通過QAxServer獲取excel應用對象QaxoObject,然後用QaxoObject打開對應的Excel文檔,找到指定的工作表,從中讀取指定位置的單元格。
示例:
在cpp文件中。
#包含?& ltQAxObject & gt
QAxObject?*工作簿?=?NULL
QAxObject?*工作簿?=?NULL
QAxObject?*單元格=空;
QAxObject?*excel?=?新的?QAxObject("Excel。應用”);//運行excel程序
如果?(excel-& gt;isNull())?{
QMessageBox::critical(0,“錯誤信息”?"找不到EXCEL應用程序");
返回;
}
excel-& gt;dynamicCall("SetVisible(bool)",?假);
練習冊?=?excel-& gt;query subobject(" WorkBooks ");//找到工作表對象
工作簿?=?工作簿-& gt;querySubObject("Open(QString,QVariant,QVariant)",?文件名,3,真);//當有兩個參數時,三個參數true和false都是正常的,false?鎖定excel文件,其他程序只能以只讀方式打開。否則,程序在處理excel文件時,在外部打開excel,程序會異常退出。
如果?(!工作簿)?{
QMessageBox::critical(0,“錯誤信息”?“excel?文件不存在”);
返回;
}
QAxObject?*?工作表?=?工作簿-& gt;querySubObject("WorkSheets(int)",?1);//打開第壹張工作表。
QAxObject?*?使用範圍?=?工作表-& gt;query subobject(" used range ");//獲取工作表的scope對象。
QAxObject?*?行?=?used range-& gt;query subobject(" Rows ");
QAxObject?*?專欄?=?used range-& gt;query subobject(" Columns ");
int?intRowStart?=?used range-& gt;屬性(“行”)。toInt();
int?intColStart?=?used range-& gt;屬性(“列”)。toInt();
int?intCols?=?列-& gt;屬性(“計數”)。toInt();
int?intRows?=?行-& gt;屬性(“計數”)。toInt();
for(int?i = intRowstsrt我?& ltintRowStart?+?intRowsi++){
for(j=intColStart?;j & ltintColStrt+intCols;j++){
細胞?=?工作表-& gt;querySubObject("Cells(int,int)",?我j?);?//獲取單元格
if(單元格->;財產(“價值”)。type()==QVariant::Double){
qDebug()& lt;& ltQString::number(單元格-& gt;財產(“價值”)。toDouble(),' f ',0);
}別的?if(單元格->;財產(“價值”)。type()==QVariant::QString){
qDebug()& lt;& lt單元格->;財產(“價值”)。toString();
}
}
}
工作簿-& gt;dynamicCall("Close?(布爾)",?假);
excel-& gt;dynamicCall("退出?(void)”);
刪除?工作簿;
刪除?工作簿;
刪除?excel