Qt6添加第三方QtXlsx库及qmake和Cmake的配置方法

建议:
读取Excel表格数据的四种方法:

QT读取Excel表格内容到Table Widget_用qtxlsx如何读取excel文件中的值,写进tablewidget中-优快云博客
(https://blog.youkuaiyun.com/qq_16186465/article/details/125555628)
但是AxObject读取表格内容比较缓慢,使用QtXlsx库读写的速度就比较快速。

本文的方法导入的是一个非标准的库,总体使用方法是上大差不差,但是代码或者函数上有些细节需要具体修改。(我是在阅读已有的资料后发现无法在自己的电脑上实现,才找到了另一种方法,同志们可以先看看以下参考,能否在自己电脑上成功)

标准QtXlsx库:
1、QT5版本:QT 使用第三方库QtXlsx操作Excel表-优快云博客
    (https://blog.youkuaiyun.com/zhengyanan815/article/details/132274988)
    
2、Win10(11)下Qt6.2编译Qtxlsx库_qt移植xlsx-优快云博客
    (https://blog.youkuaiyun.com/qq_27450255/article/details/123070736)

3、QtXlsx适配qt6源码修改_qt6 qttypes-优快云博客
    (https://blog.youkuaiyun.com/muren/article/details/120701240)

其中2号链接的“修改编译错误”部分是根据3号链接来的。但是当我按照3号链接修改完之后,出现了1807个报错(绝望的一)。后来我找到了文章开头那个大佬的博客,但是文章中没有讲如何配置Cmake,故一齐整理,以节省同志们的时间。

一、QtXlsx导入
    这是QT官方推荐的一个开源项目,好像是一个韩国人开发的(这个项目里面包含的东西也和123号链接包括的不同)
    https://github.com/QtExcel/QXlsx
    
    点击绿色的Code-->Download ZIP(所有的都下,因为里面包括了一些说明和组件可能会用到) 

    下载完成后解压出来,能看到一些MarkDown文件,这是作者写使用说明的,包括了三种语言:

    [英语English](README.md), [韩语Korean](README.ko.md), [俄语Russian](README.RU.md)
    (红框为英语文件的样式) 

    里面其实更加详细地写了配置 Qmake和Cmake的若干种方法,那么我就帮大家翻译我使用的这一种。


二、qmake与Cmake的导入
    1.解压之后,找到文件夹中的QXlsx文件,打开它,把这四个文件复制到你的项目目录下
        header
        source
        QXlsx.pri
        QXlsx.pro
        
    2.在你的项目的.pro文件中添加如下代码,以指明配置信息
        # QXlsx code for Application Qt project
        QXLSX_PARENTPATH=./         # current QXlsx path is . (. 表示当前目录)
        QXLSX_HEADERPATH=./header/  # 当前目录下的header子目录
        QXLSX_SOURCEPATH=./source/  # 当前目录下的source子目录
        include(./QXlsx.pri) #.pri文件应该包含了QXlsx库的配置信息
    
    3.在main.cpp文件中添加
        #include <QCoreApplication>
        #include "xlsxdocument.h"
        #include "xlsxchartsheet.h"
        #include "xlsxcellrange.h"
        #include "xlsxchart.h"
        #include "xlsxrichstring.h"
        #include "xlsxworkbook.h"
        using namespace QXlsx;

        int main(int argc, char *argv[])
        {
            QCoreApplication a(argc, argv);

            QXlsx::Document xlsx;
            xlsx.write("A1", "Hello Qt!"); //将"Hello Qt!"写入(A,1)单元. it's shared string.
            xlsx.saveAs("Test.xlsx"); // 保存为 'Test.xlsx'

            return 0;
            // return a.exec();
        }
        
    4.编译一下 -->  编译通过  -->  运行 -->  发现在项目目录的build目录下多了一个Test.xlsx文件
    注意:如果你要读取Excel到TableWidget里面显示,需要注意的是,Excel表格的读写是从(1,1)开始的,而TableWidget的上setItem是从(0,0)开始的。
    否则显示效果就会空出第一行和第一列
    
    
三、Cmake的导入方法
    1.文件里的:HowToSetProject-cmake.md给出了若干种配置Cmake类型项目的方法,我选择了其中的:不用安装(without installation)的方法
        ### To use in your application without installation
        There are 2 possible ways:
        1) Use cmake subdirectory
        In your CMakeLists.txt:
        ```cmake
        add_subdirectory(QXlsx)
        target_link_libraries(myapp PRIVATE QXlsx::QXlsx)
    add_subdirectory(QXlsx)#在项目下面(sub)添加(add)QXlsx目录作为一个子项目。
    QXlsx是一个包含CMakeLists.txt文件的目录,该文件定义了如何构建QXlsx库
    target_link_libraries(testExcelCmake PRIVATE QXlsx::QXlsx)#这条指明了链接什么库到什么地方

    2. 拷贝文件
    这里需要把解压后的文件夹里的整个QXlsx都拷贝到项目文件的目录下(就是把整个QXlsx文件夹拷贝到项目目录下,不然CMakeLists会和项目的CMakeLists重名)
    (因为需要cmake里面文件来进行构建,大概意思就是说:CMakeLists.txt按照cmake里面文件的说明来进行构建)
    注意:这里还需要复制一个README.md文件,就是那个大文件夹内的markdown文件里的README.md,否则就会报错:README.md&quot; could not be found.

    3.添加导入的代码
        //在你项目的CMakeList.txt文件中
        ```cmake
        add_subdirectory(QXlsx)
        target_link_libraries(myapp PRIVATE QXlsx::QXlsx)
        //add_subdirectory(QXlsx):在项目下面(sub)添加(add)QXlsx目录作为一个子项目。
        //QXlsx是一个包含CMakeLists.txt文件的目录,该文件定义了如何构建QXlsx库
        //指定了目标(即你的应用程序或库)应该链接哪些库。myapp指你的项目的name
        
    这两行代码需要分开添加,具体位置可以在你的 CMakeLists.txt文件中找一下:
    找到find_package(...)在的位置:添加add_subdirectory(QXlsx)
        find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
        find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
        add_subdirectory(QXlsx)
        
    CMakeLists.txt里往下滑,找到target_link_libraries(...)在的位置
    添加:target_link_libraries(myapp PRIVATE QXlsx::QXlsx) 
        target_link_libraries(mac_to_random_password PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
        target_link_libraries(mac_to_random_password PRIVATE QXlsx::QXlsx)
    这里我的项目名字是:mac_to_random_password,所以 myapp 的位置就要改成mac_to_random_password

    4.编译-->  编译通过  -->  检查是否导入成功  -->  导入成功!!!
    左侧项目下面出现QXlsx的文件夹和文件内容就基本说明导入成功了,然后检测方法和qmake部分的代码应该是一样的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值