2:头文件包含 #include<QAxObject>
3:定义一个QAxObjec对象并且指定父对象
4:连接控件,控件通常有excel和wps两种,大多数是excel,但需注意电脑上是否
安装了excel以及excel是否激活,因为这两种情况都会导致读取失败
实例:
//加入用户电脑没有安装excel,setControl的返回值是零
//第二条if语句是判断用户有没有安装wps,有的话就打开wps控件
if (!excel.setControl("Excel.Application"))
{
if (!excel.setControl("ket.Application")) //连接Excel控件
{
QMessageBox::about(NULL, "提示", "请安装excel或wps ")
return
}
}
5:设置读取.xlsx文件对象的属性
实例:
excel.setProperty("Visible", true)//设置.xlsx文件是否可见
6:获取工作簿集合
实例:
QAxObject *work_books = excel.querySubObject("WorkBooks")
7:通过调用COM中的一个函数来打开我们的.xlsl文件
实例:
work_books->dynamicCall("Open (const QString&)", QString("D:/luohuiqing/qtexcel.xlsx"))
/*调用COM中名为Open的函数,并将第二个参数当做Open的形参传入*/
8:获取活动工作簿
实例:
QAxObject *work_book = excel.querySubObject("ActiveWorkBook")//获取活动工作簿
9:获取所有的工作表
实例:
QAxObject *work_sheets = work_book->querySubObject("WorkSheets")//获取所有的工作表,如图
10:获取工作表数目
实例:
int sheet_count = work_sheets->property("Count").toInt() //获取工作表数目
11.在判断获取的工作表数目大于零的情况下,对表进行我们想要的 *** 作,如:
11.1:获取我们工作簿中的某张表
实例:
QAxObject *work_sheet = work_book->querySubObject("Sheets(int)", 1)
/*获取工作簿中的第一张表*/
11.2:获取我们表中值的集合
实例:
QAxObject *usedRange=work_sheet->querySubObject("UsedRange")
QVariant var=usedRange->dynamicCall("value")
11.3:将我们得到的值存入一个QVariantList容器中
实例:
QVariantList varRowContents=var.toList()
11.4:将数据的数量用一个const的整形变量保存下来
11.5:注意数据在容器中的存储顺序是一行一行存储的
12:在我们对.xslx文件 *** 作结束后,应该关闭wps或excel,防止有进程残留
实例:
excel.dynamicCall("Quit(void)")
Qt *** 作Excel,无论后缀是xls还是xlsx都可以。
1.如下,是下载的一个Excel VBA参考手册,内容不算太全!
2.Excel读取
为了便于测试,假设已存在一个excel文件, *** 作内容已经被红色标记出来。如下所示:
主要读取内容:
标题
工作表数目
工作表名称
起始行
起始列
行数
列数
单元格内容
代码如下:
QAxObject excel("Excel.Application")
excel.setProperty("Visible", true)
QAxObject *work_books = excel.querySubObject("WorkBooks")
work_books->dynamicCall("Open (const QString&)", QString("E:/test.xlsx"))
QVariant title_value = excel.property("Caption") //获取标题
qDebug()<<QString("excel title : ")<<title_value
QAxObject *work_book = excel.querySubObject("ActiveWorkBook")
QAxObject *work_sheets = work_book->querySubObject("Sheets") //Sheets也可换用WorkSheets
QStringList referListQSqlDatabase db = QSqlDatabase::addDatabase("QODBC")
db.setDatabaseName("DRIVER={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}DBQ=" + dir.filePath("test.xlsx"))
if(db.open())
{
QSqlQuery query("select * from [Sheet1$A:A]",db)// Select range, place A1:B5 after $
while (query.next())
{
QString dataStr= query.value(0).toString()
if(dataStr != "0")
{
referList <<dataStr
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)