概述:
此库方便快捷可以不依赖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幻想家;感谢大家