00.QtXlsx是什么?能干什么?
QtXlsx是一个可以读写Excel文件的库。它不需要Microsoft Excel,可以在Qt5支持的任何平台上使用。
可以创建、读取、编辑.xlsx文件。
01.如何编译?
1.1编译环境:
Windows10平台;
Qt 5.12.0 MSVC 2017_64 编译器;
1.2编译准备:
1.2.1首先准备下载Perl5地址,否则直接编译QtXlsx会报错提示没有Perl5环境;如果已安装,则忽略。
下载Perl5地址:Perl Download - www.perl.orghttps://www.perl.org/get.html
(多平台:MAC/LINUX/WINDOWS)Windows平台下载直达地址:https://strawberryperl.com/
(根据自己系统位数进行选择,这里以选择64位平台的为例:)
1.2.2 下载Perl5完成后,进行安装即可。主要是要有这个环境。
1.2.3 下载QtXlsx源码,下载地址:
https://strawberryperl.com/
1.3编译过程:
1.3.1首先下载的源码必须放到没有中文的路径下,Qt项目路径中不能有中文。
1.3.2使用Qt 打开QtXlsx项目,直接点击左下方小锤子构建即可。
1.3.3在项目构建完以后,找到构建目录,然后按照02大步骤,添加为Qt模块。
编译后的构建目录如下:
02.添加为Qt模块
2.1新建一个名为QtXlsx的空文件夹,将刚才下载下来的QtXlsx工程下/src/xlsx下的所有文件复制一份放到刚才新建的空文件夹中,其实里面就是一些头文件。然后,将文件夹QtXlsx拷贝到你的Qt目前所使用的编译器目录的include文件夹下,如下图所示:
2.2接下来拷贝你的构建目录下的lib文件夹下的t5Xlsxd.lib、Qt5Xlsx.lib、Qt5Xlsx.prl、Qt5Xlsxd.prl4个文件到你的Qt目前所使用的编译器目录的lib文件夹下,如下图所示:
2.3再将你的构建目录下的lib文件夹下的Qt5Xlsx.dll、Qt5Xlsxd.dll两个库文件拷贝到你的Qt目前所使用的编译器目录的bin文件夹下,如下图所示:
2.4最后,将你的构建目录下的mkspecs/modules-inst文件夹下的 qt_lib_xlsx.pri 和qt_lib_xlsx_private.pri这两个文件拷贝到你的Qt目前所使用的编译器目录的mkspecs/modules文件夹下,如下图所示:
至此,模块添加完成,接下来就是使用了。
03.如何使用?
1.首先在确保02大步骤都完成的情况下,在你的项目.pro文件中,添加模块:
QT += xlsx
2.引入头文件(根据需求,引入自己所需的头文件)
#include <QtXlsx/xlsxdocument.h>
3.举一个使用的例子,导出tablewidget中的表的数据:
//导出表记录
void Income::exportTableRecords()
{
QString filePath = QFileDialog::getSaveFileName(this, "Save File", "", "Excel Files (*.xlsx)");
if (!filePath.isEmpty()) {
QXlsx::Document xlsx(filePath);
// 获取 TableWidget 中的列数和行数
int rowCount = ui->tableWidget_records->rowCount();
int columnCount = ui->tableWidget_records->columnCount();
// 写入表头
for (int column = 0; column < columnCount; ++column)
{
QTableWidgetItem* item = ui->tableWidget_records->horizontalHeaderItem(column);
if (item != nullptr)
{
//write原型:
//bool write(int row, int col, const QVariant &value, const Format &format = Format());
xlsx.write(1, column + 1, item->text());//从1开始,不是从0开始
}
}
// 写入数据行
for (int row = 0; row < rowCount; ++row)
{
for (int column = 0; column < columnCount; ++column)
{
QTableWidgetItem* item = ui->tableWidget_records->item(row, column);
if (item != nullptr)
{
xlsx.write(row + 2, column + 1, item->text());
} else
{
xlsx.write(row + 2, column + 1, "");
}
}
}
xlsx.save();//关闭保存
}
}
04.打包注意事项
在软件进行打包的时候,注意将:Qt5Xlsx.dll 这个动态库放到与exe同级目录下,否则软件会提示找不到Qt5Xlsx.dll从而不能运行。
05.总结
整体来说编译过程很简单,就是需要在编译之前先下载安装Perl5环境,而后根据自己目前所使用的的编译器进行编译,然后添加为模块。最后在打包的时候千万注意要将对应的动态库文件加入进去,否则会提示错误!