QT操控excel1:如何实现读取excel文件的任意一行一列的值
Posted seen_in_hw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT操控excel1:如何实现读取excel文件的任意一行一列的值相关的知识,希望对你有一定的参考价值。
首先要告诉大家的是这个事非常简单,不需大家自己去安装各种包啥的了。
只需要安装了QT就行,然后在pro文件里面加上一行
CONFIG+= qaxcontainer
接着我们在MainWindow.cpp里面加上各种构件就好了
#include <QAxObject> 这个是核心,然后为了输出控制信息,我们还需要 #include <QDebug>
之后在MainWindow里面直接撸代码就行:
注意excel修改文件路径!!!!
MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)ui->setupUi(this);QAxObject excel("Excel.Application");excel.setProperty("Visible",false);QAxObject *workbooks = excel.querySubObject("WorkBooks");workbooks->dynamicCall("Open (const QString&)",QString("c:/dd.xls")); //路径在这里!!!!QAxObject *workbook = excel.querySubObject("ActiveWorkBook");//获取活动工作簿QAxObject *worksheets = workbook->querySubObject("WorkSheets");//获取所有的工作表,如图int intCount = worksheets->property("Count").toInt(); //获取了表的个数qDebug()<<intCount;QAxObject *worksheet = workbook->querySubObject("WorkSheets(int)",1);//获取第一个工作表// QAxObject *range = worksheet->querySubObject("Cells(int,int)",1,1); //获取cell的值QAxObject *used_range = worksheet->querySubObject("UsedRange"); //获得利用的范围QAxObject *rows = used_range->querySubObject("Rows");QAxObject *columns = used_range->querySubObject("Columns");int row_start = used_range->property("Row").toInt(); //获得开始行// qDebug()<<row_start; //已经验证准确int column_start = used_range->property("Column").toInt(); //获得开始列int row_count = rows->property("Count").toInt();// qDebug()<<row_count; //已经验证准确int column_count = columns->property("Count").toInt();// QString strVal = range->dynamicCall("Value2()").toString();for(int i = row_start;i<=row_count;i++)for(int j = column_start;j<=column_count;j++)QAxObject *cell = worksheet->querySubObject("Cells(int,int)",i,j);// QString cell_value = cell->property("Value").toString();qDebug()<<i<<j<<cell->dynamicCall("Value2()").toString(); //只有这句才好使,能够确保能够读取信息,各个信息存于后面那个变量中
qDebug()<<endl;
excel.dynamicCall("Quit(void)"); //加上这行实现了对文件的释放// ui->label->setText(strVal);
以上是关于QT操控excel1:如何实现读取excel文件的任意一行一列的值的主要内容,如果未能解决你的问题,请参考以下文章