Qt 使用QXlsx将QTableView数据导出到Excel表格

这是我记录Qt学习过程的第7篇心得文章,上次写到使用QAxObject将QTableView数据导出到Excel表格,使用过程中发现,执行效率不高,而且当电脑同时安装Office和WPS时,还经常出错,于是就研究了QXlsx,发现利用QXlsx处理Excel真的太方便了,啥也不说,上代码。

实现代码:
//将QTableView数据写入EXcel,使用QXlsx
bool Skysonya::writeTableviewToExcelByQXlsx(const QString &fileName, QString tableName, QTableView *tableView,QString strTitle)
{QAbstractTableModel *model = qobject_cast<QAbstractTableModel *>(tableView->model());int rowCount = model->rowCount();int colCount = model->columnCount();QXlsx::Document xlsx;xlsx.addSheet(tableName);int colW[200] = {};// 写入表头并设置字体QXlsx::Format headerFormat;headerFormat.setFontName("黑体");  //设置字体headerFormat.setFontSize(12);      //设置字号headerFormat.setHorizontalAlignment(QXlsx::Format::AlignHCenter);  //设置单元格居中headerFormat.setBorderStyle(QXlsx::Format::BorderThin);            //设置单元格边线// 写入表头for (int col = 0; col < colCount + 1; ++col){QString cell;if (col == 0)cell = "序号";  //增加序号列elsecell = model->headerData(col - 1, Qt::Horizontal).toString();xlsx.write(1, col + 1, cell, headerFormat);// 设置列宽int columnWidth = cell.toLocal8Bit().length() + 2;  //计算字符串长度,中文字符占位2if (columnWidth > colW[col]){colW[col] = columnWidth;xlsx.setColumnWidth(col + 1, columnWidth);  // 设置每列宽度为字符数+2}}// qDebug() << "1:" << ArrayToString(colW, colCount) << Qt::endl;qDebug() << strTitle + ":数据表头写入成功!" << Qt::endl;QXlsx::Format itemFormat;itemFormat.setHorizontalAlignment(QXlsx::Format::AlignHCenter);itemFormat.setBorderStyle(QXlsx::Format::BorderThin);// 写入数据for (int row = 0; row < rowCount; ++row){for (int col = 0; col < colCount + 1; ++col){QString cell;if (col == 0)cell = QString::number(row + 1);elsecell = model->data(model->index(row, col - 1)).toString();xlsx.write(row + 2, col + 1, cell, itemFormat);// 设置列宽int columnWidth = cell.toLocal8Bit().length() + 2;  //计算字符串长度,中文字符占位2if (columnWidth > colW[col]){colW[col] = columnWidth;xlsx.setColumnWidth(col + 1, columnWidth);  // 设置每列宽度为字符数+2}}// qDebug() << QString::number(row + 2) + ":" << ArrayToString(colW, colCount) << Qt::endl;}qDebug() << strTitle + ":数据表数据写入成功!" << Qt::endl;// 保存文件if (!xlsx.saveAs(fileName)){messageBox("warning", strTitle, "保存Excel文件失败!");return false;}qDebug() << strTitle + ":保存Excel文件成功!" << Qt::endl;xlsx.deleteLater();return true;
}

messageBox()函数参考拙文QT实现QMessageBox中文按钮

QXlsx下载与配置,查阅QXlsx Qt操作excel,作者周不易,在此也表示感谢!

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

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

相关文章

智慧用电监控装置:引领0.4kV安全用电新时代

在智能科技日新月异的今天&#xff0c;电力安全与管理正迎来一场前所未有的革新。为0.4kV以下TT、TN系统打造的智慧用电在线监控装置不仅重新定义了电力监控的边界&#xff0c;更为建筑安全用电筑起了一道坚不可摧的防线。 装置集成了单、三相交流电精确测量、四象限电能计量、…

【GL09】(算法)卡尔曼滤波

一、简介 卡尔曼滤波&#xff08;Kalman Filter&#xff09;是一种有效的递归滤波器&#xff08;自回归滤波器&#xff09;&#xff0c;它能够从一系列的包含统计噪声的测量中估计动态系统的状态。卡尔曼滤波广泛应用于信号处理、控制理论、自动驾驶、金融等领域。 基本公式&am…

IIC学习总结

一、基本概念 IIC&#xff08;Inter-Integrated Circuit&#xff09;其实是IICBus简称&#xff0c;所以中文应该叫集成电路总线&#xff0c;它是一种串行通信总线&#xff0c;使用多主从架构。 二、模块结构 I2C串行总线一般有两根信号线&#xff0c;一根是双向的数据线SDA&…

go 聊天系统项目-1

1、登录界面 说明&#xff1a;这一节的内容采用 go mod 管理【GO111MODULE‘’】的模块&#xff0c;从第二节开始使用【GO111MODULE‘off’】GOPATH 管理模块。具体参见 go 包相关知识 1.1登录界面代码目录结构 代码所在目录/Users/zld/Go-project/day8/chatroom/ 1.2登录…

qt QCheckBox详解

QCheckBox 是 Qt 框架中的一个控件&#xff0c;用于创建复选框&#xff0c;允许用户进行选择和取消选择。它通常用于表单、设置界面和任何需要用户选择的场景。 QCheckBox继承自QAbstractButton类&#xff0c;因此继承了按钮的特性。它表示一个复选框&#xff0c;用户可以通过…

使用Postman发送POST请求的指南

作为一名软件测试工程师&#xff0c;掌握如何使用Postman发送POST请求是非常重要的技能。POST请求通常用于向服务器发送数据&#xff0c;以创建或更新资源。本文将详细介绍如何在Postman中发送POST请求&#xff0c;帮助你高效地进行接口测试。 什么是POST请求&#xff1f; PO…

2024年meme币走势分析:最后两个月的市场趋势与机会 #交易所#dapp#KOL社区合作

2024年即将步入尾声&#xff0c;meme币市场经历了显著的波动。对于加密市场来说&#xff0c;年底的走势尤为关键&#xff0c;尤其是meme币这种受市场情绪影响较大的加密资产。本文将从市场环境、宏观经济因素、投资者情绪、技术分析等方面分析meme币在2024年最后两个月的潜在走…

python读取视频并转换成gif图片

1. 安装三方库 moviepy 将视频转换成gif&#xff0c;需要使用 moviepy库 确保已经安装了moviepy库 pip install moviepy2. 代码实现&#xff1a; from moviepy.editor import VideoFileClipmyclip VideoFileClip("video.mp4") myclip2 myclip.subclip(0, 10).re…

opencv - py_imgproc - py_filtering filtering 过滤-卷积平滑

文章目录 平滑图像目标2D 卷积&#xff08;图像过滤&#xff09;图像模糊&#xff08;图像平滑&#xff09;1. 平均2. 高斯模糊3. 中值模糊4. 双边滤波 其他资源 平滑图像 目标 学习&#xff1a; 使用各种低通滤波器模糊图像将定制滤波器应用于图像&#xff08;2D 卷积&…

大数据新视界 -- 大数据大厂之数据质量管理全景洞察:从荆棘挑战到辉煌策略与前沿曙光

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

如何保护网站安全

1. 使用 Web 应用防火墙&#xff08;WAF&#xff09; 功能&#xff1a;WAF 可以实时检测和阻止 SQL 注入、跨站脚本&#xff08;XSS&#xff09;、文件包含等常见攻击。它通过分析 HTTP 流量来过滤恶意请求。 推荐&#xff1a;可以使用像 雷池社区版这样的 WAF&#xff0c;它提…

大模型中的token是什么;常见大语言模型的 token 情况

目录 大模型中的token是什么 常见大语言模型的 token 情况 大模型中的token是什么 定义 在大模型中,token 是文本处理的基本单位。它可以是一个字、一个词,或者是其他被模型定义的语言单元。简单来说,模型在理解和生成文本时,不是以完整的句子或段落为单位进行一次性处理…

redis安装使用

1. 下载地址 下载最新稳定版本的 redis-windows 7.x 版本(本实例以 7.2.3 为例) # 下载地址 https://download.csdn.net/download/qq827245563/89923840 2. 解压文件 3. 下载可视化工具 # 下载地址 https://download.csdn.net/download/qq827245563/89940627 4. 启动运行 …

ELK + Spring Boot:日志分析入门与实践(一)

目录 一、安装ELK 1.1 版本选择 1.2 linux环境安装 1.3 ES配置启动 1.4 Kibana配置启动 1.5 Logstash配置启动 二、项目调整 2.1 pom依赖调整 2.2 yml配置文件调整 2.3 logback-spring配置 三、日志查询分析 3.1 创建索引模式 3.2 查询日志数据 一、安装ELK 1.1 …

elasticsearch 8.x 插件安装(六)之Hanlp插件

elasticsearch 8.x 插件安装&#xff08;六&#xff09;之Hanlp插件 elasticsearch插件安装合集 elasticsearch插件安装&#xff08;一&#xff09;之ik分词器安装&#xff08;含MySQL更新&#xff09; elasticsearch 8.x插件&#xff08;二&#xff09;之同义词安装如何解决…

vi —— 终端中的编辑器

目标 vi 简介打开和新建文件三种工作模式常用命令分屏命令常用命令速查图 01. vi 简介 1.1 学习 vi 的目的 在工作中&#xff0c;要对 服务器 上的文件进行 简单 的修改&#xff0c;可以使用 ssh 远程登录到服务器上&#xff0c;并且使用 vi 进行快速的编辑即可常见需要修改…

stm32cubeIde 使用笔记

划分flash空间 需要更改STM32xxx_FLASH.ld文件 输出其他格式文件

图片批量处理神器将每个文件夹中的多张图片拼接,一键实现横向和纵向的长图拼接效果,让你的图片处理更高效

是不是经常面对一堆图片文件夹&#xff0c;想要把它们里面的宝贝图片一一拼接起来&#xff0c;却又被繁琐的操作吓得直摇头&#xff1f;别担心&#xff0c;今天我要给大家介绍一位图片处理界的超级英雄——首助编辑高手软件&#xff01;它就像是一位拥有魔法的图片大师&#xf…

【JVM详解JVM优化】聊聊JVM优化

简介&#xff1a; 前面两期文章讲了JVM内存模型&#xff1a;【JVM详解&JVM优化】JVM内存模型-CSDN博客 以及JVM垃圾回收机制&#xff1a;【JVM详解&JVM优化】JVM垃圾回收机制-CSDN博客 在本篇文章中&#xff0c;我们将深入探讨Java虚拟机&#xff08;JVM&#xff09;…

通俗易懂的餐厅例子来讲解JVM

餐厅版本 JVM&#xff08;Java虚拟机&#xff09;可以想象成一个虚拟的计算机&#xff0c;它能够运行Java程序。为了让你更容易理解&#xff0c;我们可以用一个餐厅的比喻来解释JVM&#xff1a; 菜单&#xff08;Java源代码&#xff09;&#xff1a; 想象一下&#xff0c;Java…