Qt数据库应用8-数据导出组件示例说明
一、前言
为了方便用户学习使用本组件,特意针对每个功能模块,每种可能的应用场景,都编写了对应的示例demo,从初级示例到中级示例再到高级示例以及多线程示例等,层层加码,针对结构体数据都做了相当详细细致的说明。
- 简单示例用于演示最简单的参数设置导出数据到csv、xls、pdf和打印数据,直接传入的QTableView、QTableWidget控件。
- 导入导出用于演示导出导入csv格式的数据,数据源为数据库表,相当于将数据库表信息导出到csv文件,导入的csv文件会更新对应数据库数据。
- 初级示例用于演示最基础的直接从数据库数据导出到xls、pdf和打印数据,支持数据校验、随机背景、自动拉伸末尾列。
- 中级示例在初级示例上增加了子标题,同时校验规则改成了对数值类型进行过滤突出颜色显示。
- 高级示例用于演示分组导出数据,比如表中的某个设备的所有数据放一块,每个分组带有自定义信息内容用于展示统计的多条信息。
- 线程示例用于演示多线程导出数据到xls、pdf文件,可以指定行数列数,比如指定10个字段100W条数据,导出只用21s。
- 后期增加查询示例用于演示根据用户选择的查询条件对查询出来的记录进行导出到xls、pdf和打印数据。
- 图文混排用于演示如何自定义图文报表,导出到pdf及打印。
二、功能特点
- 组件同时集成了导出数据到csv、xls、pdf和打印数据。
- 所有操作全部提供静态方法无需new,数据和属性等各种参数设置采用结构体数据,极为方便。
- 同时支持QTableView、QTableWidget、QStandardItemModel、QSqlTableModel等数据源。
- 提供静态方法直接传入QTableView、QTableWidget控件,自动识别列名、列宽和数据内容。
- 每组功能都提供单独的完整的示例,注释详细,非常适合各阶段Qter程序员。
- 原创导出数据机制,不依赖任何office组件或者操作系统等第三方库,支持嵌入式linux。
- 速度超快,9个字段10万行数据只需要2秒钟完成。
- 只需要四个步骤即可开始急速导出海量数据比如100W条记录到Excel。
- 同时提供直接写入数据接口和多线程写入数据接口,不卡主界面。
- 可设置标题、副标题、表名。
- 可设置导出数据的字段名、列名、列宽。
- 可设置末尾列自动拉伸填充,默认拉伸更美观。
- 可设置是否启用校验过滤数据,启用后符合规则的数据特殊颜色显示。
- 可指定校验的列、校验规则、校验值、校验值数据类型。
- 校验规则支持 精确等于==、大于>、大于等于>=、小于<、小于等于<=、不等于!=、包含contains。
- 校验值数据类型支持 整型int、浮点型float、双精度型double,默认文本字符串类型。
- 可设置随机背景颜色及需要随机背景色的列集合。
- 支持分组输出数据,比如按照设备分组输出数据,方便查看。
- 可设置csv分隔符、行内容分隔符、子内容分隔符。
- 可设置边框宽度、自动填数据类型,默认自动数据类型开启。
- 可设置是否开启数据单元格样式,默认不开启,不开启可以节约大概30%的文件体积。
- 可设置横向排版、纸张边距等,比如导出到pdf以及打印数据。
- 支持图文混排导出数据到pdf以及打印数据,自动分页。
- 灵活性超高,可自由更改源码设置对齐方式、文字颜色、背景颜色等。
- 支持任意excel表格软件,包括但不限于excel2003-2021、wps、openoffice等。
- 纯Qt编写,支持任意Qt版本+任意编译器+任意系统。
三、体验地址
- 体验地址:https://pan.baidu.com/s/1ZxG-oyUKe286LPMPxOrO2A 提取码:o05q 文件名:bin_dataout.zip
- 国内站点:https://gitee.com/feiyangqingyun
- 国际站点:https://github.com/feiyangqingyun
- 个人主页:https://blog.csdn.net/feiyangqingyun
- 知乎主页:https://www.zhihu.com/people/feiyangqingyun/
四、效果图






五、相关代码
DataContent frmDataOut2::getDataContent(int maxCount)
{
DataContent dataContent;
dataContent.title = "所有短信记录";
dataContent.subTitle = QString("%1 导出短信记录").arg(DATETIME);
dataContent.columnNames = columnNames;
dataContent.columnWidths = columnWidths;
QStringList content;
getContent(maxCount, content);
dataContent.content = content;
//边框粗细
dataContent.borderWidth = 1;
//导出到xls有样式比如边框需要开启 cellStyle = true
//dataContent.cellStyle = true;
dataContent.randomColor = ui->ckRandomColor->isChecked();
//下面表示第6列 (对应表中的 类型 字段) 值 第3列重量 > 100 则突出显示
dataContent.checkColumn = ui->ckCheckColumn->isChecked() ? 3 : -1;
dataContent.checkType = ">|double";
dataContent.checkValue = "100";
dataContent.stretchLast = ui->ckStretchLast->isChecked();
dataContent.landscape = true;
return dataContent;
}
void frmDataOut2::on_btnXls_clicked()
{
time.restart();
DataContent dataContent = getDataContent(AppConfig::CountXls);
dataContent.fileName = QUIHelper::appPath() + "/db/dataout2.xls";
dataContent.sheetName = "短信信息";
DataXls::saveXls(dataContent);
setInfo(1, qMin(rowCount, AppConfig::CountXls));
QUIHelper::openFile(dataContent.fileName, "导出短信信息");
}
void frmDataOut2::on_btnPdf_clicked()
{
time.restart();
DataContent dataContent = getDataContent(AppConfig::CountPdf);
dataContent.fileName = QUIHelper::appPath() + "/db/dataout2.pdf";
DataPrint::savePdf(dataContent);
setInfo(1, qMin(rowCount, AppConfig::CountPdf));
QUIHelper::openFile(dataContent.fileName, "导出短信信息");
}
void frmDataOut2::on_btnPrint_clicked()
{
DataContent dataContent = getDataContent(AppConfig::CountPrint);
DataPrint::print(dataContent);
}
Qt数据库应用8-数据导出组件示例说明的更多相关文章
- 如何将存储在MongoDB数据库中的数据导出到Excel中?
将MongoDB数据库中的数据导出到Excel中,只需以下几个步骤: (1)首先,打开MongoDB安装目录下的bin文件夹,(C:\Program Files (x86)\MongoDB\Serve ...
- [软件共享]将数据库中的数据导出为SQL脚本
可以直接将数据库中的数据导出为脚本,并可以自己设置过滤条件.使用方法很简单,不在多说了.下面是软件截图.123 下载:http://files.cnblogs.com/pw/mssql2.rar
- c# .Net :Excel NPOI导入导出操作教程之数据库表信息数据导出到一个Excel文件并写到磁盘示例分享
string sql = @"select * from T_Excel"; ----------------DataTable Star---------------- ...
- C/C++ Qt 数据库QSql增删改查组件应用
Qt SQL模块是Qt中用来操作数据库的类,该类封装了各种SQL数据库接口,可以很方便的链接并使用,数据的获取也使用了典型的Model/View结构,通过MV结构映射我们可以实现数据与通用组件的灵活绑 ...
- flex+java将数据库里的数据导出到指定目录下excel表里(poi)
数据写入到excel中采用的是Apache POI: //java后台的一个工具类(该工具类适用于为不同字段添加,方便) /* 下面这个方法是将list转换为Excel工作表的 */ public s ...
- 数据库查询的数据导出到xls表,集合数据导出到xls表
//实体类package com.outxls; public class Student { private Integer studentId; private String studentNam ...
- MySql数据库,查询数据导出时会出现重复的记录(数据越多越明显)
在查询数据时,数据量多的时候,我们会使用分页功能. 每页显示多少数据. 这种情况下,一半看不出什么问题. 而导出数据时,有时就是通过分页的方法,逐步讲数据追加到导出文件中. 当全部数据都导出之后,就有 ...
- C/C++ Qt 数据库与TreeView组件绑定
在上一篇博文<C/C++ Qt 数据库QSql增删改查组件应用>介绍了Qt中如何使用SQL操作函数,并实现了对数据库的增删改查等基本功能,从本篇开始将实现数据库与View组件的绑定,通过数 ...
- Java利用Apache POI将数据库数据导出为excel
将数据库中的数据导出为excel文件,供其他人查看 public class POITest { public static void main(String[] args) { POITest te ...
- 学习笔记 DataGridView数据导出为Excel
DataGridView数据导出为Excel 怎样把WinForm下的“DGV”里的绑定数据库后的数据导出到Excel中. 比如:在窗体里有个一“DGV”,DataGridView1,绑定了数据源 ...
随机推荐
- 管中窥豹----从String Intern中观察.NET Core到.NET 8 托管堆的变迁
简介 https://www.cnblogs.com/lmy5215006/p/18494483 在此文中,研究.NET String底层结构时,我所观察到的情况与<.NET Core底层入门& ...
- .NET开发者福音:JetBrains官方宣布 Rider 非商用免费开放!
前言 JetBrains官方前段时间宣布重磅消息,其两款知名IDE应用WebStorm和Rider现已面向社区开放,允许用户免费用于非商业用途.此举旨在支持学习.开源项目开发.内容创作及业余开发等活动 ...
- 对于特定的游戏问题使用启发式算法可以取得比AI算法更好的表现
相关: Using A.I. to DOMINATE NERDS in TETRIS 有些问题的求解可以通过建模将其转换为强化学习问题,然后再使用强化学习算法对其进行求解,但是很多问题如果不建模为强化 ...
- ubuntu系统下安装 steam 游戏平台
方法1:安装命令: sudo snap install steam 方法2:下载安装: 地址: https://store.steampowered.com/about/
- (Redis基础教程之五)如何在Redis中操作字符串
如何在ubuntu18.04上安装和保护redis 如何连接到Redis数据库 如何管理Redis数据库和Keys 如何在Redis中管理副本和客户端 如何在Redis中管理字符串 如何在Redis中 ...
- 进程管理工具之PM2
Github地址 https://github.com/Unitech/pm2 官方文档 http://pm2.keymetrics.io/docs/usage/quick-start/ npm安装 ...
- 一款.NET开源的Windows资源管理器标签页工具
前言 今天大姚给大家分享一款基于.NET开发的可以让你在Windows资源管理器中使用Tab多标签功能的小工具:QTTabBar. 工具介绍 QTTabBar是一款基于.NET开发的可以让你在Wind ...
- Python 学习记录(1)
前言 简单说明: 简单情况:主要记录学习Python的简单情况,包括代码与结果,以及关键注释 工具与来源: 以下代码与结果都可在JupyterLab上实现,更多情况可看Github 使用 NumPy ...
- 渗透测试-Kioptix Level 1靶机getshell及提权教程
声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无 ...
- gradle命令与maven命令对照
Gradle和Maven都是流行的构建工具,用于管理和构建Java项目.下面是Gradle命令和对应的Maven命令对照: 1. 构建项目: - Gradle: `./gradlew build` - ...