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

python 读取 Excel

[excel可以同步数据库吗]excel中两个表格中的数据怎么实现同步?

关于oledb对Excel的读取(转)

java poi读取excel

如何使用Qt来操作Excel

NPOI读取Excel,导入数据到Excel练习01