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的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Qt来操作Excel

Qt 读取excel

qt 或 C++ 可以在没有安装 office excel 或其他必备框架的情况下读取 excel

用qt读写excel文件一定要安装excel么

Qt中快速读写Excel方法封装

防止在编写qt activex excel读/写代码时未安装excel时应用程序崩溃