QT/QT5.15+VS2019配置QtXlsx实现读写Excel文件
Qt操作Excel文件主要有(我看到的)QAxObject和QtXlsx两种方法;对比:(1)QAxObject需要依赖与WPS或者OFFICE EXCEL,QAxObject遇到福昕阅读器团灭;(2)QtXlsx配置稍微麻烦点,但是独立不依赖于OFFICE等;选QtXlsx;一、环境配置时效性,先说环境,Qt5.15.1VS2019;0、免编译方法按照网上的教程出现了新问题,可能与版本有关吧
Qt操作Excel文件主要有(我看到的)QAxObject和QtXlsx两种方法;对比:
(1)QAxObject需要依赖与WPS或者OFFICE EXCEL,QAxObject遇到福昕阅读器团灭;
(2)QtXlsx配置稍微麻烦点,但是独立不依赖于OFFICE等;
选QtXlsx;
一、环境配置
时效性,先说环境,Qt5.15.1 VS2019;
0、免编译方法
按照网上的教程出现了新问题,可能与版本有关吧,没有深入研究;
1、下载
下载QtXlsx,地址:https://github.com/dbzhang800/QtXlsxWriter
下载Perl5.32,地址:https://www.perl.org/get.html
这里有一点小问题,新版本的Perl应该是取消了exe安装方式,需要复制“口令”到cmd界面下载,安装完成后输入perl -v测试,如果显示一大段版本信息,就配置好了,若无,添加环境变量;
2、编译
Qt打开下载源码中的QtXlsx.pro文件,分别在Debug和Release下构建,成功生成include,lib,mkspecs等文件夹;(新版本无Qlist和QVecter的问题)
3、拷贝
(1)将../build-qtxlsx-Desktop_Qt_5_15_1_MSVC2019_64bit-Release/include路径下QtXlsx文件夹拷贝至D:\QT\5.15.1\msvc2019_64\include(参考)中;
(2)将../build-qtxlsx-Desktop_Qt_5_15_1_MSVC2019_64bit-Release/lib路径下Qt5Xlsxd.lib、Qt5Xlsx.lib、Qt5Xlsx.prl、Qt5Xlsxd.prl 4个文件拷贝至D:\QT\5.15.1\msvc2019_64\lib(参考)中;
(3)将../build-qtxlsx-Desktop_Qt_5_15_1_MSVC2019_64bit-Release/lib路径下Qt5Xlsx.dll、Qt5Xlsxd.dll 两个文件拷贝至D:\QT\5.15.1\msvc2019_64\bin(参考)中;
(4)将../build-qtxlsx-Desktop_Qt_5_15_1_MSVC2019_64bit-Release/mkspecs/modules 文件夹下的qt_lib_xlsx.pri 文件拷贝至D:\QT\5.15.1\msvc2019_64\mkspecs\modules(参考)中;
至此完成了环境的配置;
二、Qt 中引用读写Excel
1、新建一个任意类型Qt项目,在pro文件中引入:
QT += xlsx
2、插入代码
#include <QtXlsx/QtXlsx>
QXlsx::Document xlsx;
xlsx.write("A1", "Hello wd!");
xlsx.saveAs("Test.xlsx");
3、调试运行,成功

三、VS2019引入读写Excel
因为我VS用的比较多,相对Qt配置起来略有些麻烦,按照教程分别如下第0步所示,失败;
0、失败尝试
(1)属性 - VC++目录 设置如图

(2)链接器 - 输入设置如下

(3)程序中引用如下
#include <QtXlsx/QtXlsx>
QXlsx::Document xlsx;
xlsx.write("A1", "Hello Qt!");
xlsx.saveAs("Test.xlsx");
(4)调试
输出成功,但程序中止报错: “Qxlsx 异常: 0xC0000374: 堆已损坏”。
1、拷贝文件
在VS2019内新建一个Qt Widget项目;
(1)拷贝 QtXlsxWriter-master 源码文件至项目目录下;
(2)拷贝build-qtxlsx-Desktop_Qt_5_15_1_MSVC2019_64bit-Release文件夹至项目目录下,由于太长,更名为qtxlsx;
2、项目设置
(1)在属性 - C/C++ - 常规 - 附加包含目录中添加编译xlsx生成文件夹中的include和include/QtXlsx

(2)在属性 -链接器 - 输入添加编译xlsx生成文件夹lib中的Qt5Xlsxd.lib;

3、添加代码,调试,成功
#include <QtXlsx/QtXlsx>
QXlsx::Document xlsx;
xlsx.write("A1", "Hello wd!");
xlsx.saveAs("Test.xlsx");

水平有限,这样只能做到QtXlsx可用,至于步骤0报错原因目前尚未理解;
更多推荐


所有评论(0)