QT快速读取Excel
Posted wangbin-heng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT快速读取Excel相关的知识,希望对你有一定的参考价值。
1 //QT+=axcontainer 2 3 #include <QFileDialog> 4 #include <QAxObject> 5 #include <QVariant> 6 #include <QList> 7 8 void getExcelContent(QList<QList<QVariant>>& result) 9 { 10 QString filePath=QFileDialog::getOpenFileName( 11 this, QStringLiteral("选择Excel文件"), "", 12 QStringLiteral("Exel file(*.xls *.xlsx)")); 13 if(filePath.isEmpty)return; 14 15 QAxObject* excel=new QAxObject(this); 16 excel->setControl("Excel.Application");//连接Excel控件 17 excel->dynamicCall("SetVisible (bool Visible)","false");//不显示窗体 18 excel->setProperty("DisplayAlerts", false);//不显示任何警告信息。如果为true那么在关闭是会出现类似“文件已修改,是否保存”的提示 19 20 //打开文件 21 QAxObject *workbooks = excel->querySubObject("WorkBooks");//获取工作簿集合 22 QAxObject *workbook = excel->querySubObject("Open (const QString &)", filePath);//获取当前工作簿 23 24 //打开表 25 //QAxObject *worksheets = workbook->querySubObject("Sheets");//获取工作表集合 26 QAxObject *worksheet = worksheets->querySubObject("Item(int)",1);//工作表1,即sheet1 27 28 //获取表中的数据到QVariant中 29 QAxObject *usedRange=worksheet->querySubObject("UsedRange"); 30 QVariant var=usedRange->dynamicCall("value"); 31 32 QVariantList varRowContents=var.toList(); 33 const int rowCount=varRowContents.size(); 34 QVariantList tmp; 35 for(int i=0; i<rowCount; ++i) 36 { 37 tmp=varRowContents[i].toList(); 38 result.append(tmp); 39 } 40 }
以上是关于QT快速读取Excel的主要内容,如果未能解决你的问题,请参考以下文章