Qt:一键导出客户端(五)-- excel导出
绪论
此部分代码仅供参考,存在一些问题,本打算把49张表所有数据存储在49个sheet页里,但是由于数据量太大,速度太慢,所以放弃掉了。改用导出txt的方式。
源码
myexcel.h
#ifndef MYEXCEL_H
#define MYEXCEL_H#include <QDate>class MyExcel
{public:MyExcel();// 导出excelvoid exportExcel(QString fileName, QDate start, QDate end);};#endif // MYEXCEL_H
myexcel.cpp
#include "myexcel.h"
#include "mydatabase.h"
#include "config.h"#include <QAxObject>
#include <QDir>
#include <QDebug>MyExcel::MyExcel()
{}void MyExcel::exportExcel(QString fileName, QDate start, QDate end)
{qDebug() << "开始:" + QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");QAxObject *excel = new QAxObject("Excel.Application");excel->dynamicCall("SetVisible(bool)", true);excel->setProperty("Visible", false);QAxObject *workbooks = excel->querySubObject("WorkBooks");workbooks->dynamicCall("Add");QAxObject *workbook = excel->querySubObject("ActiveWorkBook");QAxObject *worksheets = workbook->querySubObject("Worksheets");/*********************************************************************************************************************************/QAxObject *worksheet = workbook->querySubObject("Worksheets(int)", 1);worksheet->setProperty("Name", Config().getTableName(1));QString zd_1 = Config().getSQLColumn(1);QStringList zdl_1 = zd_1.split(",");for (int var = 0; var < zdl_1.count(); var++) {QAxObject *range = worksheet->querySubObject("Cells(int,int)", 1, var + 1);// 此处写要插入的内容range->setProperty("Value", zdl_1.at(var));}QSqlQuery query = MyDatabase().getQuery(1, start, end);int columnNum = 2;while (query.next()) {for (int var = 0; var < zdl_1.count(); var++) {QAxObject *range = worksheet->querySubObject("Cells(int,int)", columnNum, var + 1);// 此处写要插入的内容range->setProperty("Value", query.value(var));}columnNum++;}qDebug() << "Total:" + QString("%1").arg(columnNum - 2);/*********************************************************************************************************************************/MyDatabase *myDatabase = new MyDatabase;for (int i = 2; i < 50; i++) {QAxObject *sheet = worksheets->querySubObject("Add()");sheet->setProperty("Name", Config().getTableName(i));QString zd = Config().getSQLColumn(i);QStringList zdl = zd.split(",");for (int var = 0; var < zdl.count(); var++) {QAxObject *range = sheet->querySubObject("Cells(int,int)", 1, var + 1);// 此处写要插入的内容range->setProperty("Value", zdl.at(var));}QSqlQuery newQuery = myDatabase->getQuery(i, start, end);columnNum = 2;while (newQuery.next()) {for (int var = 0; var < zdl.count(); var++) {QAxObject *range = worksheet->querySubObject("Cells(int,int)", columnNum, var + 1);// 此处写要插入的内容range->setProperty("Value", newQuery.value(var));}columnNum++;}qDebug() << "Total:" + QString("%1").arg(columnNum - 2);}delete myDatabase;/********************************************************************************************************************************/// 写入文件workbook->dynamicCall("SaveAs(const QString&)", QDir::toNativeSeparators(fileName));// 释放workbook->dynamicCall("Close()");//释放所有工作表worksheet->clear();//释放excelexcel->dynamicCall("Quit()");delete excel;qDebug() << "结束:" + QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");}
(若有什么错误,请留言指正,3Q)
Qt:一键导出客户端(五)-- excel导出相关推荐
- Angular导出功能(excel导出功能、文件数据流导出功能、图片的下载导出功能)
Angular导出功能(excel导出功能.文件数据流导出功能.图片的下载导出功能) 场景1:(直接返回网络地址进行导出的excel) 后台返回的是 : "http://192.168.0. ...
- java excel导出 模板_Java Excel 导出 模板
上面导出PDF和EXCEL的问题是图片路径出错!!! 数据库中存存的图片路径是"../dishpic/722f464f-3883-42aa-901f-21706da9c582.png&quo ...
- php larver 导出e,laravel5 Excel导出
1.安装:maatwebsite/excel的2.1.0版本,命令行:composer require "maatwebsite/excel:~2.1.0": 2.在config/ ...
- java的excel导出_java 实现excel 导出功能
1 //导出数据2 //SELECT SUBSTRING(create_time,1,10) s,COUNT(*) FROM data_read WHERE data_id IN (SELECT da ...
- Vue 项目excel导出功能
一.思路 前端主导(工作大量在前端) 二.新建文件夹及文件 新建src/vendor/export2Excel.js 示例代码:示例地址 /* eslint-disable */ import { s ...
- 开发指南专题十六:JEECG微云快速开发平台Excel导出
开发指南专题十六:JEECG微云快速开发平台Excel导出 14.3. Excel导出 导出工具类ExcelExportUtil 提供两个函数 //创建多个Sheet public static H ...
- vue之Excel导出和导入
vue之Excel导出和导入 vue之Excel导出和导入 Excel导入 Excel导出 Excel多级表头导出 vue之Excel导出和导入 Excel导入 注意:多级表头的Excel导出排版出现 ...
- 使用建造者模式(Builder Pattern) 设计Excel导出场景,附源码
目录 建造者模式(Builder Pattern)简单介绍: 常见Excel导出场景 常见Excel 导出编码过程-结合过程查看代码 本文中的Excel导出使用方式 使用建造者模式设计Excel 导出 ...
- openfeign调用excel导出接口
1.常见的excel导出核心方式 excel导出在企业应用中比较常见的. 我们一般都是把接口的 header 的 "ContentType" 置为 "applicatio ...
- php导出复杂表头excel,php如何导出复杂列的excel?
//前台处理 document.getElementById("a_export").οnclick=function(){ $("#LoadingPark") ...
最新文章
- 本地Yum生成数据库及常用命令
- rtsp连接断开_live555学习之RTSP连接建立以及请求消息处理过程
- 【Kotlin】函数类型 ( 函数类型 | 带参数名称的参数列表 | 可空函数类型 | 复杂函数类型 | 带接收者函数类型 | 函数类型别名 | 函数类型实例化 | 函数调用 )
- Java(五)异常处理,异常参数,自定义异常,嵌套异常
- 玩转POI、EasyExcel报表导入导出!
- 我们常常怕打扰别人,而忽略要打个电话问候对方,
- linux 用户与工作组
- Win10黑屏的时候显示时钟怎么设置
- 02-02 逐帧动画、多组动画案例 实现小人跑步效果
- 如何保证缓存一致性?
- 以太网服务器怎么改成无线网,win10 以太网显示无线wifi名称怎么改
- 数论——中国剩余定理
- 一键加速去不掉加锁的_vivo手机一键加速的时候,怎样可以不把当前的应用清除?...
- Springboot整合JavaMail通过阿里企业邮箱发验证码
- 2020 年值得关注的20个区块链项目,来看看今年该把目光放在哪?
- Linux大全——Linux系统学习资源合集
- 解析:366API如何解决微信扫描二维码无法下载APK 的问题
- 华为hybrid,pvid,lap
- ERROR: Could not find a version that satisfies the requirement beautifulsoup
- ubuntu 修改开机启动项默认值