Qt之qtxlsx(Excel读取)开源库使用示例

Qt之qtxlsx Excel读取 开源库使用示例

概述:

此库方便快捷可以不依赖Excel写入读取文件秒级万行数据读取;
1.需要安装ActivePerl-5.28.msi 软件
2.本库需要下载源码进行编译
3.本案例编译环境QtCreator(5.12.1)使用案例也是此版本
4.此库会上传到资源有需要的小伙伴想白嫖请在CSDN:关注私信 和 关注公众号:Qt幻想家 及添加QQ群获取;

步骤:

1.解压压缩包:QtXlsxWriter-master
2.安装文件夹中ActivePerl-5.28.msi(一路下一步)
在这里插入图片描述
安装完成
在这里插入图片描述
3.双击打开.pro(如果不先安装步骤2,打开工程会报错误并且编译不过)
在这里插入图片描述
在这里插入图片描述
4.Debug、Release两种模型各编译一次;
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
到此步骤位置编译全部完成,接下来将编译好的库及头文件拷贝到qt的安装目录下;

5.将include整个文件夹下的文件全部拷贝到
在这里插入图片描述
在这里插入图片描述
6.库文件拷贝
在这里插入图片描述
在这里插入图片描述
6.拷贝 mkspecs\modules 文件夹下的qt_lib_xlsx.pri到你的Qt模块下 D:\APP\Qt_MinGW\5.12.10\mingw73_64\mkspecs\modules

此处如果不添加的话,在你的Pro文件内写 QT += xlsx 会不识别此模块

示例工程

.pro

QT       += core gui xlsx

.cpp

#include "QtXlsx/QtXlsx"

void AMS::readExcel()
{
    QString file_name = QFileDialog::getOpenFileName(NULL, "Open File","","Microsoft Excel(*.xlsx)");
    //qDebug() <<  __FILE__ << __LINE__ << __FUNCTION__ << file_name;
    if(file_name.isEmpty())
        return;
    if(!file_name.contains(".xlsx"))
    {
        QMessageBox::warning(this, tr("提示"), tr("文件后缀错误!"));
        return;
    }
    //开始进行数据读取
    QXlsx::Document xlsx(file_name);
    QXlsx::Workbook *workBook = xlsx.workbook();
    QXlsx::Worksheet *workSheet = static_cast<QXlsx::Worksheet*>(workBook->sheet(0));//第一个标签页
    qDebug() << "row:" << workSheet->dimension().rowCount() << "col:" << workSheet->dimension().columnCount();
    for (int i = 2; i < workSheet->dimension().rowCount(); i++)
    {
        int col = 1;
        ExcelInfo info;
        QXlsx::Cell *_cell = workSheet->cellAt(i,col++);
        if(_cell->isDateTime())
        {
            info.strDate = _cell->dateTime().toString("yyyy/MM/dd");
        }
        //info.strDate = xlsx.cellAt(i,col++)->value().toString();
        info.strTime = xlsx.cellAt(i,col++)->value().toString();
        info.fTemperature = xlsx.cellAt(i,col++)->value().toFloat();
        info.fHumidity = xlsx.cellAt(i,col++)->value().toFloat();
        info.nOpticalradiation = xlsx.cellAt(i,col++)->value().toInt();
        info.fMoisture1 = xlsx.cellAt(i,col++)->value().toFloat();
        info.fMoisture2 = xlsx.cellAt(i,col++)->value().toFloat();
        info.fMoisture3 = xlsx.cellAt(i,col++)->value().toFloat();
        info.fMoisture4 = xlsx.cellAt(i,col++)->value().toFloat();
        info.fMoisture5 = xlsx.cellAt(i,col++)->value().toFloat();
        info.fMoisture6 = xlsx.cellAt(i,col++)->value().toFloat();
        info.nEC = xlsx.cellAt(i,col++)->value().toInt();
        info.nTraffic = xlsx.cellAt(i,col++)->value().toInt();
        GlobalShare::m_g_vecExcelInfo.push_back(info);
    }
 }

over:

欢迎大家关注作者在文末评论、点赞、转发以及批评指正!
如果大家有更好的方法或有问题可以在文末评论一起讨论!
共同学习!
共同进步!

文末一句话:

好久不更新了,接下来会给大家持续输出一些基础入门级Qt与C++示例,感谢大家支持,还望大家批评指正!
看见此篇文章的小伙伴没关注公众号的还望关注下:Qt幻想家;感谢大家

  • 6
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值