乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > Qt读取Excel的问题.求助,多谢进来看看-qt快速读取excel,QT快速读取excel中数据

Qt读取Excel的问题.求助,多谢进来看看-qt快速读取excel,QT快速读取excel中数据

作者:乔山办公网日期:

返回目录:excel表格制作


QStringList referList;
QSqlDatabase 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;
}
}
}

给你个方法:
excel的xlsx文件其实是个zip文件,使用Qt代码将其解压,里面是xml文件很容易读取,不受目标电脑上有无excel限制
方法/步骤

首先,我们要创建一个项目并进行初步的项目设置,过程参见本系列文章的第一篇。这里就不再多说了,我们将项目文件从qtcreator中打开。

为了显示读取到的数据,我们先在界面文件中添加一个Label,如果读取了数据可以在这里显示一下进行验证。

然后,打开mainwindow.cpp文件,在其中引入适当的头文件,具体如图中所示。

接着,我们在头文件中打开置顶的excel文件,并对其中的对象类进行配置,因为前文已经介绍过,就不详细说了,具体代码如下:
QAxObject excel("Excel.Application");
excel.setProperty("Visible",false);
QAxObject *workbooks = excel.querySubObject("WorkBooks");
workbooks->dynamicCall("Open (const QString&)",QString("c:/a.xls"));
QAxObject *workbook = excel.querySubObject("ActiveWorkBook");//获取活动工作簿
QAxObject *worksheets = workbook->querySubObject("WorkSheets");//获取所有的工作表,如图

然后,我们开始获取第一工作表。e79fa5e98193e59b9ee7ad94339

通过range查询对应的cell,然后获取cell中value值。代码如下:
QAxObject *range = worksheet->querySubObject("Cells(int,int)",1,1); //获取cell的值
QString strVal = range->dynamicCall("Value2()").toString();

接着,我们将得到的strVal显示label上用于验证是否成功读取。

我们再在c盘下新建一个a.xls文件,并且在第一个单元格输入一个字符串,如图所示.

之后,我们用程序运行下,查看程序是否达到预期的效果.可以看到程序运行成功了.

Qt操作Excel,无论后缀是xls还是xlsx都可以。

1.如下,是下载的一个Excel VBA参考手册,内容不算太全!

2.Excel读取
为了便于测试,假设已存在一个excel文件,操作内容已经被红色标记出来。如下所示:
主要读取内容:
标题
工作表636f70797a686964616f338数目
工作表名称
起始行
起始列
行数
列数
单元格内容
代码如下:

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

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网