> 文章列表 > Qt5 编译QtXlsx并添加为模块[Windows]

Qt5 编译QtXlsx并添加为模块[Windows]

Qt5 编译QtXlsx并添加为模块[Windows]

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环境,而后根据自己目前所使用的的编译器进行编译,然后添加为模块。最后在打包的时候千万注意要将对应的动态库文件加入进去,否则会提示错误!