qt编写mysql导出excel_Qt编写数据导出到Excel及Pdf和打印数据
一、前言
用Qt开发已经九年了,期间用Qt做过不少的项目,在各种项目中有个功能很常用,尤其是涉及到数据记录存储的项目,那就是需要对查询的数据进行导出到Excel,或者导出到Pdf文件,或者直接打印查询的数据,其中导出数据到Excel最常见,基本上有三种方法。
方法一使用QAxObject,小数据量还可以,数据量一大直接懵逼,性能指数级下降,而且不支持跨平台,只能在WIN上玩一玩,对于大量的linux开发者来说,直接废了。
方法二使用第三方开源的QtXlsx,这个做的还是可以,使用人群也比较多,据说不依赖office组件跨平台的,缺点就是不支持xls格式,只支持高版本的xlsx,使用稍微比较繁琐,用户更多的需要的是直接一个函数传入对应的数据即可,越简单越好。
方法三使用csv格式作为导出数据,纯文本的数据存储格式,默认逗号作为分隔符,也可以指定其他符号作为分隔符,csv格式也是各种表格软件都支持的格式,相当轻便,作为各大系统或者平台和编程语言之间交互数据还是非常方便的,很多工业控制领域的软件都会采用这种格式,缺点就是太简单了,不能分组或者指定过滤条件特殊颜色显示等。
在对比了三种方式以后,决定自己造个轮子,主要是为了自身项目的需要写的,后面慢慢的客户需求多了,增加了通用常用场景的数据导出需求,目标要求至少包含三点:速度够快、使用够简洁、不依赖任何组件。
作品大全:https://qtchina.blog.csdn.net/article/details/97565652
二、功能特点
原创导出数据机制,不依赖任何office组件或者操作系统等第三方库,尤其是支持嵌入式linux。
10万行数据9个字段只需要2秒钟完成。
只需要四个步骤即可开始急速导出大量数据到Excel。
同时提供直接写入数据接口和多线程写入数据接口,不卡主界面。
可设置标题、副标题、表名。
可设置字段名称、列宽度。
可设置是否启用校验过滤数据、校验的列、校验规则、校验值,符合规则的特殊颜色显示。
可设置随机背景颜色及需要随机背景色的列集合。
支持分组输出数据,比如按照设备分组输出数据,方便查看。
可自定义行内容分隔符。
可追加数据形式写入数据,建议每次追加的数据小于10000条。
灵活性超高,可自由更改源码设置对齐方式、文字颜色、背景颜色等。
支持任意excel表格软件,包括但不限于excel2003/2007/2010/2013/2017/wps/openoffice等。
除了提供导出到Excel类以外,还提供导出到Pdf文件以及打印数据的类。
注释完善,详细完整的使用demo,支持QTableWidget、QTableView、数据库三种数据源。
纯Qt编写,支持任意Qt版本+任意编译器+任意系统。
三、效果图
四、使用方法
//第一步:设置文件路径,标题等信息;
QList columnNames;
QList columnWidths;
columnNames << "防区号" << "防区名称" << "告警类型" << "告警内容" << "告警时间";
columnWidths << 65 << 100 << 120 << 150 << 180;
QString file = qApp->applicationDirPath() + "/1.xls";
ExcelThread::Instance()->init();
ExcelThread::Instance()->setFileName(file);
ExcelThread::Instance()->setSheetName("告警信息");
ExcelThread::Instance()->setTitle("所有告警信息");
ExcelThread::Instance()->setSubTitle(QString("%1 导出告警信息").arg(DATETIME));
ExcelThread::Instance()->setColumnNames(columnNames);
ExcelThread::Instance()->setColumnWidths(columnWidths);
//第二步:打开文件,启动线程;
ExcelThread::Instance()->open();
ExcelThread::Instance()->start();
//第三步:逐行输入数据;
QStringList list;
list << "防区上线" << "防区离线" << "防区旁路" << "防区报警" << "防区故障";
for (int i = 0; i < logCount; i++) {
int index = qrand() % 4;
QStringList temp;
temp.append(QString::number(i + 1));
temp.append("防区" + QString::number(i + 1));
temp.append("主机上报");
temp.append(list.at(index));
temp.append(DATETIME);
ExcelThread::Instance()->appendContent(temp.join(";"));
}
//第四步:关闭文件,关闭线程;
ExcelThread::Instance()->close();
ExcelThread::Instance()->stop();
qt编写mysql导出excel_Qt编写数据导出到Excel及Pdf和打印数据相关推荐
- .net 导出excel_Qt编写的项目作品18-数据导出到Excel及Pdf和打印数据
一.功能特点 原创导出数据机制,不依赖任何office组件或者操作系统等第三方库,尤其是支持嵌入式linux. 10万行数据9个字段只需要2秒钟完成. 只需要四个步骤即可开始急速导出大量数据到Exce ...
- Qt编写数据导出到Excel及Pdf和打印数据
一.前言 用Qt开发已经九年了,期间用Qt做过不少的项目,在各种项目中有个功能很常用,尤其是涉及到数据记录存储的项目,那就是需要对查询的数据进行导出到Excel,或者导出到Pdf文件,或者直接打印查询 ...
- r语言 将表格导出为csv_如何将R语言中表格数据输出为Excel文件.pdf
如何将R 语言中的表格数据输出为Excel 文件 熊荣川 六盘水师范学院生物信息学实验室 xiongrongchuan@126.com /u/Bearjazz 平台的开放性使得R 语言具有了丰富的运算 ...
- 如何用Java读取单元格的数据_Java读取Excel中的单元格数据
目前网上能找到Web平台下的读取Excel表格中数据的两种比较好的方案:PageOffice好用开发效率高:POI免费.供大家参考,针对具体情况选择具体方案. 1. PageOffice读取excel ...
- matlab将列数据存成excel表格,matlab将列数据存成excel表格-matlab工作区数据怎么转为excel...
如何将excel中数据导入matlab并存入数组中 直接写 X=xlsread('路径 文件名.xls','你想取出的列'): 例如X=xlsread('c:\数据.xls','a1:b4');就取出 ...
- matlab数据变成一列数据,matlab读取excel表格列数据-matlab导入excel后,怎么把数据提取成一列?...
怎么用matlab读取excel表格中的一列十六进制数据? x=xlsread('oillack.xls','sheet1','a1:a73') excel文件名是oillack.xls,sheet1 ...
- Excel - 将 TXT 数据导入到 Excel 中(自动将数据拆分成多列)
txt文本: 将txt格式里的两列数据复制粘贴导入excel 后全都在同一列. 通过下述操作, 可以将 TXT 数据导入到 Excel 中,并且自动拆分为两列. 数据→从文本
- excel数据平均分配给多人_excel表格数据分配-用Excel怎么才能将组数据平均分配给几个人...
如何用EXCEL快速分配数据? 表格按排序,年龄就按大小排列一样的年龄就一起了. 在表格右侧找一空做序号,1.2.3.4.5.6.7.8.9.10.再继续做1.2.3.....8.9.10,..... ...
- vb6 数据自动生成excel文件_Excel随机生成数据
工作中有时候需要大量数据,而手头没有现成的数据怎么办?,很多小伙伴苦思冥想编写数据,意义不大还累个半死,今天推出两种方法随机生成数据小妙招. 1.用rand函数生成A与B之间的随机数字(A≤随机数≤B ...
- java批量文件打包成压缩成zip下载和大量数据导出excel时的处理方法
对于我们来说,java导出数据成excel或其他数据文件,或者下载资源是开发中的家常便饭, 但是在导出的时候,如果点击一个按钮导出几百万条数据,如果不作处理的话很可能会出现一系列的问题. 这里介绍打包 ...
最新文章
- 修改anaconda中conda和pip的源为清华源
- mysql数据库备份工具expdb,使用expdp完成自动备份数据库案例以及遇到的问题
- HihoCoder - 1457 后缀自动机四·重复旋律7(后缀自动机)
- 构建高性能.NET应用之配置高可用IIS服务器-第二篇 IIS请求处理模型
- 命令行操作mysql
- c语言如何输入矩阵_如何在 COMSOL 软件中调试外部材料
- Win7 单机Spark和PySpark安装
- 荣耀20发布会花式官宣:4!-3!+2!伦敦见
- mysql-使用存储过程一次性批量创建多张表
- 简单实现x的n次方pta_数学学霸的解题思路1“降低次方和次元”
- CCF201712-2 游戏(100分)【模拟】
- 太牛逼了!自从项目中用了Disruptor之后,性能提升了2.5倍
- android 百度地图无法显示,Android Studio中使用百度地图API,不显示地图的问题解决办法...
- 数据库 基础 与命令 逻辑思维导图
- Alist+KODI打造免费家庭影院
- saber与matlab,saber与matlab的比较 (1)
- 安卓7.0及以上用户证书导入的问题
- 埃森哲java开发怎么样_技术丨埃森哲Data Privacy 、商汤科技、平安科技人工智能(AI)类日常实习...
- iView Table合并单元格(行、列)
- 中国将成亚太 Linux 枢纽
热门文章
- 【火灾检测】基于matlab GUI火灾检测(带面板)【含Matlab源码 1646期】
- 【三维路径规划】基于matlab A_star算法无人机山地三维路径规划【含Matlab源码 266期】
- 【疫情模型】基于matalb改进的SEIR模型【含Matlab源码 667期】
- 【消费量预测】基于matlab碳排放约束下煤炭消费量预测【含Matlab源码 223期】
- 【图像变换】基于matalb DIBR-3D图像变换【含Matalb源码 082期】
- 青县计算机学校,青县将建设新学校(中小学各一所)今年3月开工,明年即可完工!...
- 游戏行业数据类丛书_理论丛书:高维数据101
- 推荐一个专业的正则表达试学习网站
- java常用类objet,Java基础-常用API-Object类
- s查看oracle空间分配,Oracle查看表空间使用率(包括临时表空间)