Qt通过QXlsx库文件写入到excl文件,读取excl文件

第一:下载QXlsx库文件

https://download.csdn.net/download/qq_32663053/90739425

第二:在Qt项目中引入QXlsx库,需要把QXlsx库文件放在项目文件夹下

第三:将tableview中的数据存入到excl文件

代码:

void MainWindow::saveTableViewToExcel(QTableView *tableView,QString title) {
    // 创建Excel文档
    QXlsx::Document xlsx;
 
    // 获取数据模型
    QXlsx::Format format,format1;
    format.setTextWrap(true); // 设置文本自动换行
    format.setHorizontalAlignment(QXlsx::Format::AlignHCenter);
    format.setVerticalAlignment(QXlsx::Format::AlignVCenter);
    format1.setTextWrap(true); // 设置文本自动换行
    format1.setHorizontalAlignment(QXlsx::Format::AlignHCenter);
    format1.setVerticalAlignment(QXlsx::Format::AlignVCenter);
    format1.setFontSize(20);
    QString filePath = QFileDialog::getSaveFileName(this, tr("Save File"),"",tr("Excel Files (*.xlsx *.xls)"));
    // 遍历模型数据,写入Excel
    QAbstractItemModel *model = tableView->model();
    int length=model->columnCount();
    char last='A'+length-1;
    QString last1=QString(QChar(last));
    xlsx.mergeCells("A1:"+last1+"1");
    xlsx.write(1, 1, title,format1);
    for(int i=0;i<model->columnCount();i++){
        xlsx.setColumnWidth(i+1,25);
        xlsx.write(2, i+1, model->headerData(i, Qt::Horizontal).toString(),format);
    }
    for (int row = 2; row < model->rowCount()+2; row++) {
        for (int col = 0; col < model->columnCount(); col++) {
            QModelIndex index = model->index(row-2, col);
            xlsx.write(row + 1, col + 1, model->data(index).toString(),format);
        }
    }
 
    // 保存Excel文件
    xlsx.saveAs(filePath);
    if(filePath!="")
        QMessageBox::information(this,"提示","数据导出完毕");
    //delete xlsx
}

保存到指定文件。

第四:将Excl数据读取到Qt应用程序

程序:

 QString filePath = "E:/1.xlsx";
        // 创建QXlsx::Document对象并加载文件
        QXlsx::Document xlsx(filePath);
        // 检查文件是否成功加载
        if (xlsx.isLoadPackage()) {
            int sheetCount = xlsx.workbook()->sheetCount();
            for (int sheetIndex = 0; sheetIndex < sheetCount; ++sheetIndex) {
                QXlsx::Worksheet *sheet = dynamic_cast<QXlsx::Worksheet*>(xlsx.workbook()->sheet(sheetIndex));
                if (sheet) {
                    int rowCount = sheet->dimension().lastRow();
                    int columnCount = sheet->dimension().lastColumn();
                    for (int row = 1; row <= rowCount; ++row) {
                        for (int column = 1; column <= columnCount; ++column) {
                            QXlsx::Cell *cell = sheet->cellAt(row, column);
                            if (cell) {
                                QString value = cell->value().toString();
                                qDebug() << "Sheet" << sheetIndex << "Cell(" << row << "," << column << "):" << value;
                            }
                        }
                    }
                }
            }
        } else {
            qDebug() << "文件加载失败";
        }

以上是简单的通过QXlsx库文件,对Excl文件进行导入和导出。

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

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

相关文章

【KWDB 创作者计划】一款面向 AIoT 的多模数据库实战体验

一、KWDB&#xff1a;AIoT 时代的数据库新选择 KWDB 是由开放原子开源基金会孵化的分布式多模数据库&#xff0c;专为物联网、工业互联网等场景设计。其核心价值在于时序与关系数据融合处理能力&#xff1a; ​多模统一引擎​&#xff1a;单个实例可同时建立时序库&#xff08…

【教学类-102-22】蝴蝶彩色1——通义万相“彩色蝴蝶”透明切边基础图片制作(五款板式、批量下载、修图、透明、切边)

一、下载图片 关键词&#xff1a;卡通简笔画&#xff0c;白色背景&#xff0c;黑白轮廓线&#xff0c;、鲜艳&#xff0c;彩色&#xff0c;一只蝴蝶&#xff0c;简单&#xff0c;可爱&#xff0c;矢量图&#xff0c;大。 简笔画 强度1 4:3(长方形适配A4纸&#xff09; 五…

【JAVA】方法定义与重载:JVM方法调用机制(8)

核心知识点详细解释 Java方法的定义和使用 在Java中&#xff0c;方法是一段具有特定功能的代码块&#xff0c;它可以接受参数并返回一个值。方法的定义包括方法的修饰符、返回类型、方法名、参数列表和方法体。其基本语法如下&#xff1a; 修饰符 返回类型 方法名(参数列表)…

基于STM32的带恒温系统智能外卖柜设计

标题:基于STM32的带恒温系统智能外卖柜设计 内容:1.摘要 随着外卖行业的迅速发展&#xff0c;对外卖存放设备的智能化和功能性要求日益提高。本设计的目的是开发一种基于STM32的带恒温系统智能外卖柜。方法上&#xff0c;以STM32微控制器为核心&#xff0c;结合温度传感器、加…

【综述】相位解包裹算法对比分析

引言 相位解包裹是基于干涉的位相测量技术中的重要环节&#xff0c;如合成孔径雷达干涉、光学干涉测量技术、医学成像技术、数字全息三维成像、相干衍射成像等技术中都涉及位相解包裹。位相解包裹也称为位相展开、位相解截断、位相解缠绕等。与之相反的过程谓之包裹位相、截断…

Rust 学习笔记:关于枚举与模式匹配的练习题

Rust 学习笔记&#xff1a;关于枚举与模式匹配的练习题 Rust 学习笔记&#xff1a;关于枚举与模式匹配的练习题以下程序能否通过编译&#xff1f;若能&#xff0c;输出是什么&#xff1f;考虑这两种表示结果类型的方式&#xff0c;若计算成功&#xff0c;则包含值 T&#xff1b…

C++负载均衡远程调用学习之QPS性能测试

目录 1.昨日回顾 2.QPS_TEST_PROTOBUF协议的集成 3.QPS_TEST_SERVER端实现 4.QPS_TEST_QPS简单介绍 5.QPS_TEST_QPS客户端工具编写和性能测试 1.昨日回顾 2.QPS_TEST_PROTOBUF协议的集成 ## 14) Reactor框架QPS性能测试 ​ 接下来我们写一个测试用例来测一下我们…

【MySQL数据库】视图

1&#xff0c;视图的基本介绍 视图是一个虚拟表&#xff0c;其内容由查询定义。与真实表一样的是&#xff0c;视图包含带有名称的列和行数据&#xff1b;与真实表不一样的是&#xff0c;视图本身并不在数据库中存储数据。视图的数据变化会影响到基表&#xff0c;基表的数据变化…

Linux系统安装方式+适合初学者的发行版本

Linux系统安装方式适合初学者发行版—目录 一、Linux系统的安装方式1. 物理机直接安装2. 虚拟机安装3. 双系统安装4. Live USB试用5. 云服务器安装 二、适合初学者的Linux发行版1. Ubuntu2. Linux Mint3. Zorin OS4. Pop!_OS5. Elementary OS6. Fedora7. Manjaro 三、选择建议场…

Linux C++ JNI封装、打包成jar包供Java调用详细介绍

在前面 Android专栏 中详细介绍了如何在Android Studio中调用通过jni封装的c库。 在Android使用 opencv c代码&#xff0c;需要准备opencv4android&#xff0c;也就是c的任何代码&#xff0c;是使用Android NDK编译的&#xff0c;相当于在windows/mac上使用Android stdido交叉…

4.1 模块概述

1.Python结构 工程 > 包 > 模块 Python工程: “Python项目中最大的文件夹(本质就是一个文件夹)” --- 左侧的 CODE文件夹 为Python工程 Python包: 本质就是一个文件夹,但是python包中具备具体的标识,如果没有标识则不能导入 --- 左侧的 01.Python基础 文件夹为python包 P…

AJAX 实例

AJAX 实例 引言 Ajax&#xff08;Asynchronous JavaScript and XML&#xff09;是一种在无需重新加载整个页面的情况下&#xff0c;与服务器交换数据并更新部分网页的技术。Ajax通过在后台与服务器交换数据&#xff0c;实现了页面的动态更新&#xff0c;从而提高了用户体验和…

相机的基础架构

&#x1f4f7; 相机相关基础架构学习路径 一、了解手机相机系统架构 Android Camera HAL&#xff08;如果你是做 Android 平台&#xff09; 学习 Camera HAL3 架构&#xff08;基于 camera_device_t, camera3_device_ops 接口&#xff09; 熟悉 CameraService → CameraProvid…

MLX Chat - 基于 Streamlit 的 MLX 前端界面

本文翻译整理自&#xff1a;https://github.com/da-z/mlx-ui 一、关于 MLX Chat 一个基于 Streamlit 的简单 UI/网页前端&#xff0c;用于 MLX mlx-lm 项目。 相关链接资源 github : https://github.com/da-z/mlx-uiMLX 社区模型库&#xff1a;https://huggingface.co/mlx-co…

el-table 自定义列、自定义数据

一、对象数组格式自定义拆分为N列 1-1、数据格式&#xff1a; const arrayList ref([{"RACK_NO": "A-1-001"},{"RACK_NO": "A-1-002"},{ "RACK_NO": "A-1-003"},//省略多个{"RACK_NO": "A-1-100…

JVM 如何使用性能分析工具定位代码中的性能问题?

核心思想&#xff1a; 通过工具观察程序在特定负载下的运行状态&#xff0c;识别消耗资源最多的代码段&#xff08;热点代码&#xff09;、异常的内存分配模式或线程阻塞情况&#xff0c;然后针对性的优化代码。 通用步骤&#xff1a; 确定问题&#xff1a; 首先明确遇到了什…

Python虚假新闻检测识别

程序示例精选 Python虚假新闻检测识别 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《Python虚假新闻检测识别》编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0c;易读。 学习与应…

网络原理 - 12(HTTP/HTTPS - 3 - 响应)

目录 认识“状态码”&#xff08;status code&#xff09; 200 OK 404 Not Found 403 Forbidden 405 Method Not Allowed 500 Internal Server Error 504 Gateway Timeout 302 Move temporarily 301 Moved Permanently 418 I am a teaport 状态码小结&#xff1a; …

Spring Boot中集成Guava Cache或者Caffeine

一、在Spring Boot(1.x版本)中集成Guava Cache 注意&#xff1a; Spring Boot 2.x用户&#xff1a;优先使用Caffeine&#xff0c;性能更优且维护活跃。 1. 添加依赖 在pom.xml中添加Guava依赖&#xff1a; <dependency><groupId>com.google.guava</groupId&…

Linux工作台文件操作命令全流程解析

全文目录 1 确认当前工作路径2 导航与目录管理2.1 关键命令2.2 逻辑衔接 3 文件基础操作3.1 创建 → 备份 → 重命名 → 清理3.2 文件查看和编辑3.3 文件链接3.4 文件diff 4 文件权限与所有权管理5 文件打包与归档6 参考文献 写在前面 shell是一种命令解释器&#xff0c;它提供…