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

news2025/1/25 4:27:37

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/433728.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

es6笔记-let、const、var的区别

let、const、var的区别 变量提升 var 声明的变量存在变量提升,在声明前可以调用&#xff0c;直为undefindconsole.log(a); var a 1;相当于&#xff1a;var a; console.log(a); a 1;let和const不存在变量提升&#xff0c;变量要在声明前调用&#xff0c;否则报错console.log(a…

DNS服务器配置

一&#xff0c;正向解析 1>安装软件bind 提供DNS服务的软件叫bind&#xff0c;服务名是named [rootserver ~]# yum install bind -y 2>对三个配置文件进行修改 - /etc/named.conf : 主配置文件&#xff0c;共59行&#xff0c;去除注释和空行之和有效行数仅30行左右&…

Golang程序报错:fatal error: all goroutines are asleep - deadlock

文章目录 1.原始代码2.错误原因分析3. 解决方案4. 经验总结5. 练习 完整的报错信息如下&#xff1a; fatal error: all goroutines are asleep - deadlock!goroutine 1 [chan receive]: main.(*WorkerManager).KeepAlive(0xc000088f60)/root/go_workspace/studygoup/05.go:66 0…

Doris(7):数据导入(Load)之Routine Load

例行导入功能为用户提供了义中自动从指定数据源进行数据导入的功能 1 适用场景 当前仅支持kafka系统进行例行导入。 2 使用限制 支持无认证的 Kafka 访问&#xff0c;以及通过 SSL 方式认证的 Kafka 集群。支持的消息格式为 csv 文本格式。每一个 message 为一行&#xff0c;…

【Cpp】手撕搜索二叉树(K模型)

文章目录 二叉搜索树概念详解二叉搜索树的概念二叉搜索树的操作(大致思路)二叉搜索树的查找二叉搜索树的插入二叉搜索树的删除(最重点) 手撕搜索二叉树代码结点定义(以key型为例,KV型将在下一篇博客中介绍)树结构定义深拷贝构造函数与构造函数赋值重载析构函数遍历(结果按从小到…

软件测试的当下分析

在没有清晰能见度的情况下驾驶汽车不仅非常危险&#xff0c;也十分鲁莽。这会让我们和我们周边的人随时面临着碰撞、受伤、甚至死亡的风险。如果不能看到前方的道路&#xff0c;我们就无法预测潜在的危险或障碍&#xff0c;从而无法做出明智的决定并采取适当的行动。 同样&…

什么是ddos攻击?ddos攻击有哪些危害?

一、什么是 DDoS 攻击&#xff1f; DDoS 是 Distributed Denial of Service 的缩写&#xff0c;翻译成中文就是 “分布式拒绝服务”。DDoS 攻击将处于不同位置的多个计算机联合起来作为攻击平台&#xff0c;对一个和多个目标发动 DDoS 攻击&#xff0c;从而成倍提高攻击威力。…

分布式系统概念和设计-进程通信中的(网络API设计)

分布式系统概念和设计 进程间通信 中间件层 请求-应答协议 编码和外部数据表示 因特网协议的API 进程间通信的特征 一对进程间进行消息传递需要两个消息通信操作的支持&#xff08;send和receive&#xff09;&#xff0c;用于定义目的地和消息的定义。 为了能够使一个进程能…

煤化工废水除总氮除硬度,矿井水除砷除氟解决方案

随着环保标准的提升&#xff0c;大部分煤矿企业对矿井水要求执行地表三类水标准&#xff0c;氟化物要求小于1mg/l&#xff0c;这类项目存在体量大、氟含量低、水质偏差等特点。 RO工艺制备纯水是煤化工行业生产的一个辅助环节&#xff0c;会产生大量的浓盐水&#xff0c;由于浓…

十五分钟带你学会 Electron

文章目录 什么是 Electron为什么要选择 Electron安装 Electron桌面CSDN实战Electron 基础配置Electron 进程主进程渲染进程主进程与渲染进程的区别主进程与渲染进程的通信 Electron 跨平台问题Electron 部署打包应用程序发布应用程序 Electron 跨端原理总结 什么是 Electron E…

NE555 Motor LED Chaser

文章目录 1.前言2.资料下载 1.前言 这个是从YouTube上搬运来的&#xff0c;如图所示 2.资料下载 所需材料 #1# 10k resistor 1 #2# 10k variable resistor 1 #3# 10uf capacitor 1 #4# 3mm blue led 4 #5# 3mm yellow led 4 #6# 3mm red led 4 #7# 3mm green led 4 #8# 3mm…

【Linux网络】网络基础(TCP/IP协议栈、局域网通信原理、封装与解包、有效载荷分用)

文章目录 1、认识网络1.1 重新看待计算机结构1.2 网络的问题1.3 初识网络协议1.4 TCP/IP五层结构 2、网络与操作系统2.1 网络和OS的关系2.2 局域网&#xff08;以太网&#xff09;通信原理和MAC地址2.3 主机的跨网络2.4 有效载荷的分用 1、认识网络 在早年计算机之间是相互独立…

关于自身存在的严重问题总结_4/19

今早二次面试喜马拉雅&#xff0c;面试官给我的评价是&#xff1a; 1.经验不足&#xff1b; 2.实用方面生疏、理解不到位&#xff1b; 原因很正常&#xff0c;我项目自己亲手实操的太少了&#xff0c;一直在背&#xff0c;但是背 不是去读源码 去理解&#xff1b; 项目也大…

基于springboot的班级综合测评管理系统源码数据库论文

目录 1 绪论 1.1课题研究的背景 1.2 课题研究的内容 1.3 系统开发的意义 1.4初步设计方法与实施方案 1.5 本文研究内容 2相关技术介绍 2.1 Java技术 2.2B/S架构 2.3 MySQL介绍 2.4 Springboot框架 3系统需求分析 3.1 可行性分析 3.1.1 经济可行性分…

AI大模型在各行业肆虐,打工人该如何保住自己的饭碗?

开篇我先下个结论&#xff0c;那就是&#xff1a;人类在科技领域的高效率竞争&#xff0c;正在把我们生活的这个商业世界一步步地数字化。而数字化&#xff0c;不单单是AI智能的发展成果&#xff0c;更会成为它所热衷的生长温床&#xff0c;为后续人工智能的一路狂飙奠定了绝佳…

2、picodet转onnx裁剪及python onnxruntime推理

文章目录 1 对picodet xs1.1 动态图转静态图1.2 静态图转onnx1.3 paddle 含后处理 all 版本的推理1.4 onnx 含后处理 all 进行推理1.5 onnx 不含后处量 base模型推理1.5.1 获取onnx模型任一节点的输出1.5.2 base模型的推理 1.6、对picodet-xs模型进行优化1.6.1 picodet-xs base…

项目文档规范及总体布局

软件文档可以分为开发文档和产品文档两大类&#xff0c;交付用户还有用户文档。 1|1开发文档 软件开发计划需求规格说明书软件概要设计说明数据库设计说明软件详细设计说明可执行程序生成说明软件测试计划软件测试说明软件测试报告安装部署手册源代码交付说明上线部署方案上线…

spark读写时序数据库 TDengine 错误总结

最近在用spark读取、写入TDengine 数据库遇到了这样一个问题&#xff1a; JDBCDriver找不到动态链接库&#xff08;no taos in java.library.path&#xff09; 我本地都好好的&#xff0c;但是一上服务器写入就会报这个错误&#xff0c;看了很久没有排查出问题&#xff0c;后…

图像分割领域的GPT-4.0,分割一切的AI算法:Segment Anything

一、图像分割领域的GPT-4.0 大家好&#xff0c;我是千与千寻&#xff0c;今天给大家介绍的AI算法可以称得上是图像分割领域的GPT-4.0&#xff0c;号称可以分割一切的AI图像分割算法——Segment Anything。 提到GPT-4.0模型&#xff0c;相信不必我多说&#xff0c;大家都不会陌生…

C++笔记——第十三篇 种一颗 AVL树,长大变成 红黑树,开出了 map和set

目录 一、引入 1. 关联式容器 二、键值对 三、树形结构的关联式容器 3.1 set 3.1.1 set的介绍 3.1.2 set的使用 3.2 map3.2.1 map的介绍 3.2.2 map的使用 3.3 multiset 3.3.1 multiset的介绍 3.4 multimap 3.4.1 multimap的介绍 四、底层结构 4.1 AVL 树 4.1.1 AVL树的概念…