数据库数据导出到Excel

数据库(.db3)导出excel 序言 这里使用的是python3.8,觉得这个库(DaPy)好用,就特此记录一下。 正文 首先,原作者的链接在此 GitHub 其次,由于python版本的原因,从3.3版开始不推荐使用time.clock(),在3.8版本中已删除,而作者的库还是用的time.clock()(距本博客所写的时间)。 所以不想去看文件修改源代码的可以联系我,修改的源代码支持高版本的python 最后,放上代码以及结果 # import sqlite3 # from xlsxwriter.workbook import Wor 阅读详情

数据库数据导出到Excel

从数据库中获取数据,使用java建立一个新建Excel,添加表头,并将数据存储到Excel表格中的对应位置上。

在新建一个Excel时,我们会需要定义一些特别的Excel格式设置,如:
定义列头格式同时自动换行
列宽度
字体类型和大小
内容格式设置为货币同时保留千分位分隔符
单元格内容靠右显示… …

上面的这些问题都在下面的代码中解决,具体方法详见注解。

public String loadDateToExcel(String workFlowNumber){
    //根据查询条件,从数据库中查询数据
    List<Traccount> traccounts = traccount.findByWorkFlowNumber(workFlowNumber);
    //创建xlsx文件格式对象,xls格式:HSSFWorkbook
    XSSFWorkbook workbook = new XSSFWorkbook();
    //标题样式
    XSSFCellStyle setStyle = workbook.createCellStyle();
    //内容样式
    XSSFCellStyle setContentStyle = workbook.createCellStyle();

	//设置标题字体样式
	XSSFFont setFont = workbook.createFont();
	//加粗
	setFont.setBold(true);
	//字体
	setFont.setFontName("Calibri");
	//字号
	setFont.setFontHeightInPoints(short.valueOf("9").shortValue());

	//内容字体样式
	XSSFFont setContentFont = workbook.createFont();
	//字体
	setContentFont .setFontName("Calibri");
	//字号
	setContentFont .setFontHeightInPoints(short.valueOf("9").shortValue());

	//将字体样式添加到样式中
	setStyle.setFont(setFont);
	setContentStyle.setFont(setContentFont);

	//设置标题垂直居中
	setStyle.setVerticalAlignment(VerticalAlignment.CENTER);
	//设置标题水平居中
	setStyle.setAlignment(HorizontalAlignment.CENTER);
	//设置标题自动换行
	setStyle.setWrapText(true);
	//设置内容水平靠右显示
	setContentStyle.setAlignment(HorizontalAlignment.Right);

	//标题添加单元格边框    上 下 左 右
	setStyle.setBroderTop(BorderStyle.THIN);
	setStyle.setTopBorderColor(IndexedColors.BLACK.getIndex());
	setStyle.setBroderBottom(BorderStyle.THIN);
	setStyle.setBottomBorderColor(IndexedColors.BLACK.getIndex());
	setStyle.setBroderLeft(BorderStyle.THIN);
	setStyle.setLeftBorderColor(IndexedColors.BLACK.getIndex());
	setStyle.setBroderRight(BorderStyle.THIN);
	setStyle.setRightBorderColor(IndexedColors.BLACK.getIndex());

	//设置单元格内容格式  (常规,数字,货币,会计专用,时间 ... ...)
	XSSFDataFormat fmt = workbook.createDataFormat();
	String format = "#,##0.00";        //货币格式,带有千位分隔符,导出后需要双击单元格才会显示
	setContentStyle.setDataFormat(fmt.getFormat(format));
    
    //创建表对象
    XSSFSheet sheet = workbook.createSheet("数据Excel表名");
    //创建标题栏(第一行),参数为行下标,从0开始
    XSSFRow titleRow1 = sheet.createRow(0);
    //在标题栏1中写入数据
    XSSFCell cell = titleRow1.createCell(0);
    cell.setCellValue("标题0");
    cell.setCellStyle(setStyle);
    //设置列宽           0列     列宽13   0.62是根据选择不同字体加不同的数字,可以先不加,运行一下看看这里设置的和运行结果相差多少,然后替换此处的0.62    256是固定的
    sheet.setColumnWidth(0,(int)((13+0.62)*256));
    cell = titleRow1.createCell(1);
    cell.setCellValue("标题1");
    cell.setCellStyle(setStyle);
    // ......
    
    //设置列宽自适应  ,27为一共几列标题,因为上面设置了列宽,这里不再使用列宽自适应
    //for(int i=0;i<27;i++){
    //    sheet.autoSizeColumn(i,true);
        //sheet.autoSizeColumn(i,"列名",getBytes().length*2*256); 中文适用
    //}
    //遍历数据
    for(int i=0;i<traccounts.size();i++){
        Traccount traccount = traccounts.get(i);
        XSSFRow dateRow = sheet.createRow(i+1);
        
        //添加数据
        XSSFCell dataCell0 = dataRow.createCell(0);
        dataCell0.setCellValue(traccount.getBatchId());
        XSSFCell dataCell1 = dataRow.createCell(1);
        dataCell1.setCellValue(traccount.getCedant());
        //   ......
    }
    //创建临时文件目录
    String tempPath = "C:\\temp"+"\\Date\\"+id;
    File file = new File(tempPath);
    if(!file.exists()){
        file.mkdirs();
    }
    //临时文件路径/文件名
    String downloadPath = file +"\\" +"数据表"+DateUtil.today()+".xlsx";
    OutputStream outputStream = null;
    try{
        outputStream = new FileOutputStream(downloadPath);
        workbook.write(outputStream);
        outputStream.flush();
    }catch(Exception e){
        log.error("数据表导出失败"+e.getMessage());
        throw new BizException(ResultCodeEnum.INTERNAL_SERVER_ERROR);
    }finally{
        try{
            if(outputStream != null){
                outputStream.close();
            }
        }catch(IOException e){
            log.error("数据表关闭流失败"+e.getMessage());
            throw new BizException(ResultCodeEnum.INTERNAL_SERVER_ERROR);
        }
    }
    //将文件路径返回前端,前端根据文件路径可以直接下载到对应的文件
    return downloadPath;
}

也可将需要处理的数据查询完毕后,直接以excel文件流的形式传递回前端页面,具体步骤如下:

//查询数据,excel表构建同上
public String loadDateToExcel(String workFlowNumber){
    //根据查询条件,从数据库中查询数据
    List<Traccount> traccounts = traccount.findByWorkFlowNumber(workFlowNumber);
    //创建xlsx文件格式对象,xls格式:HSSFWorkbook
    XSSFWorkbook workbook = new XSSFWorkbook();
    //标题样式
    XSSFCellStyle setStyle = workbook.createCellStyle();
    //内容样式
    XSSFCellStyle setContentStyle = workbook.createCellStyle();

	//设置标题字体样式
	XSSFFont setFont = workbook.createFont();
	//加粗
	setFont.setBold(true);
	//字体
	setFont.setFontName("Calibri");
	//字号
	setFont.setFontHeightInPoints(short.valueOf("9").shortValue());

	//内容字体样式
	XSSFFont setContentFont = workbook.createFont();
	//字体
	setContentFont .setFontName("Calibri");
	//字号
	setContentFont .setFontHeightInPoints(short.valueOf("9").shortValue());

	//将字体样式添加到样式中
	setStyle.setFont(setFont);
	setContentStyle.setFont(setContentFont);

	//设置标题垂直居中
	setStyle.setVerticalAlignment(VerticalAlignment.CENTER);
	//设置标题水平居中
	setStyle.setAlignment(HorizontalAlignment.CENTER);
	//设置标题自动换行
	setStyle.setWrapText(true);
	//设置内容水平靠右显示
	setContentStyle.setAlignment(HorizontalAlignment.Right);

	//标题添加单元格边框    上 下 左 右
	setStyle.setBroderTop(BorderStyle.THIN);
	setStyle.setTopBorderColor(IndexedColors.BLACK.getIndex());
	setStyle.setBroderBottom(BorderStyle.THIN);
	setStyle.setBottomBorderColor(IndexedColors.BLACK.getIndex());
	setStyle.setBroderLeft(BorderStyle.THIN);
	setStyle.setLeftBorderColor(IndexedColors.BLACK.getIndex());
	setStyle.setBroderRight(BorderStyle.THIN);
	setStyle.setRightBorderColor(IndexedColors.BLACK.getIndex());

	//设置单元格内容格式  (常规,数字,货币,会计专用,时间 ... ...)
	XSSFDataFormat fmt = workbook.createDataFormat();
	String format = "#,##0.00";        //货币格式,带有千位分隔符,导出后需要双击单元格才会显示
	setContentStyle.setDataFormat(fmt.getFormat(format));
    
    //创建表对象
    XSSFSheet sheet = workbook.createSheet("数据Excel表名");
    //创建标题栏(第一行),参数为行下标,从0开始
    XSSFRow titleRow1 = sheet.createRow(0);
    //在标题栏1中写入数据
    XSSFCell cell = titleRow1.createCell(0);
    cell.setCellValue("标题0");
    cell.setCellStyle(setStyle);
    //设置列宽           0列     列宽13   0.62是根据选择不同字体加不同的数字,可以先不加,运行一下看看这里设置的和运行结果相差多少,然后替换此处的0.62    256是固定的
    sheet.setColumnWidth(0,(int)((13+0.62)*256));
    cell = titleRow1.createCell(1);
    cell.setCellValue("标题1");
    cell.setCellStyle(setStyle);
    // ......
    
    //设置列宽自适应  ,27为一共几列标题,因为上面设置了列宽,这里不再使用列宽自适应
    //for(int i=0;i<27;i++){
    //    sheet.autoSizeColumn(i,true);
        //sheet.autoSizeColumn(i,"列名",getBytes().length*2*256); 中文适用
    //}
    //遍历数据
    for(int i=0;i<traccounts.size();i++){
        Traccount traccount = traccounts.get(i);
        XSSFRow dateRow = sheet.createRow(i+1);
        
        //添加数据
        XSSFCell dataCell0 = dataRow.createCell(0);
        dataCell0.setCellValue(traccount.getBatchId());
        XSSFCell dataCell1 = dataRow.createCell(1);
        dataCell1.setCellValue(traccount.getCedant());
        //   ......
    }

	//将数据写入返回流
	//创建文件名称
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH_mm_ss");
        Date date = new Date();
        String fileName = sdf.format(date)+" 系统审计日志数据.xlsx";
        log.info("导出系统审计日志数据,文件名称为:"+fileName);

        try {
            String userAgent = request.getHeader("User-Agent");
            // 针对IE或者以IE为内核的浏览器:
            if (userAgent.contains("MSIE") || userAgent.contains("Trident")) {
                fileName = URLEncoder.encode(fileName, "UTF-8");
            } else {
                // 非IE浏览器的处理:
                fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
            }
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }


        //直接导出文件到浏览器
        OutputStream os = null;
        try {
//            response.setContentType("multipart/form-data");
            response.setContentType("application/vnd.ms-excel;charset=UTF-8");

            response.setHeader("Content-disposition",String.format("attachment; filename=\"%s\"", fileName));
//            response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
            response.addHeader("Pragma", "no-cache");
            response.addHeader("Cache-Control", "no-cache");

            os = new BufferedOutputStream(response.getOutputStream());
            workbook.write(os);
        } catch (Exception e) {
            e.printStackTrace();
            throw new LogHandleException(10002,"导出系统审计日志数据异常");
        }finally{
            try {
                if(os != null){
                    os.flush();
                }
            } catch (IOException e) {
                e.printStackTrace();
                throw new LogHandleException(10003,"数据流关闭异常");
            }
            try {
                if(os != null){
                    os.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
                throw new LogHandleException(10003,"数据流关闭异常");
            }
        }
}

MFC从数据库里导出excel文档 void CPctoolDlg::OnUserExcell() { if(!m_ExlApp.CreateDispatch("Excel.Application",NULL)) { AfxMessageBox("创建Excel服务失败!"); return; } //m_ExlApp.SetVisible(TRUE); CString TempPath 阅读详情

相关推荐

springboot实现数据库中数据导出Excel功能

功能介绍        网上查找了一堆的数据导出代码,可能是自己基础比较薄弱的原因还是别的什么原因,导致一直没有运行成功,就算是运行成功的,结果也是差强人意。在此总结一下自己借鉴别人已经经过自己整合出来的一个demo。 步骤解析         1. 前台页面添加数据导出按钮。         2. 后台进行数据的导出功能。         2. 1 数据库信息的查询

wilson_m的博客 5万+

将数据库表导出为Excel的两种方式

将数据库表导出为Excel的两种方式

Weishaolei0818的博客 2965

python读取数据库PostgreSQL导出excel表格

1.现有数据和目标成果 1.1现有数据 源数据保存在数据库中,使用的数据库管理软件是PostgreSQL。 本质上来说,数据存储在数据库中是以记录存储在表上实现的,在excel表格中也是以记录的形式存在。所以数据库中表的列(字段)可以与excel表的列一一对应。形式大致如下: 1.2目标成果 导出成果是excel表格,文件后缀名是.xlsx。形式大致如下: 2.代码过程 ...

WHU_Fan的博客 4025

如何将数据库数据导出至excel

将数据库的数据导出至excel,并回传到前台

leese233的博客 6183

python-excel表格自动导入数据到数据库和数据库中指定的数据导出到excel

一   excel表格自动生成数据库表文件1:model.py  我这里使用的postgresql,根据自己使用的数据库修改import psycopg2 #封装的插入数据库方法 def insert(sql): try: conn = psycopg2.connect(database='test', user='postgres', password='root', h...

huangmengfeng的博客 4696

Asp导出数据库数据到Excel

最近做ASP,需要导出数据库数据到Excel中,结果卡住好久没有进展。 今天终于解决了,总结下过程: 1.整体代码 <% Set ExcelApp = CreateObject("Excel.Application") #出问题的地方 ExcelApp.Application.Visible = True Set ExcelBook = Exce

平常心的小屋 7919

Sql Server 数据库表查询结果导出为excel文件

相信大家常常会遇到将SqlServer查询结果导出到Excel的问题。如果导出的次数少,直接“Save Results As...”就是了; 1.1准备好查询语句 1.2选择数据库,启动导入和导出向导 1.3选择数据源 1.4选择目标 1.5 1.6 1.7 1.8 后续步骤不再附图,一直

yaer123的专栏 1万+

从数据库到Excel的数据导出实战指南

在介绍示例代码之前,我们先通过一个流程图解来概述整个从数据库导出数据到Excel的过程。通过这样的图形化表示,可以清晰地看到数据操作的各个步骤以及它们之间的逻辑关系。graph LRA[开始] --> B[连接数据库]B --> C[执行SQL查询]C --> D[获取查询结果]D --> E[关闭数据库连接]E --> F[初始化pandas DataFrame]F --> G[数据预处理]G --> H[打开或创建Excel文件]H --> I[将数据写入Excel]

weixin_42510243的博客 1378

Python实现数据库一键导出为Excel表格

依赖 Python2711 xlwt MySQLdb 数据库相关 连接 获取字段信息 获取数据 Excel基础 workbook sheet 案例 封装 封装之后 测试结果 总结 数据库数据导出为excel表格,也可以说是一个很常用的功能了。毕竟不是任何人都懂数据库操作语句的。 下面先来看...

weixin_34097242的博客 1903

ASP数据库导出Excel数据的完整实现

动态网页构建技术是现代Web开发的基石。ASP(Active Server Pages)是一种服务器端脚本环境,允许开发者使用VBScript或JavaScript等脚本语言来创建动态网页。与传统的静态网页不同,ASP页面可以与服务器端的数据库进行交互,根据用户的请求动态生成内容。在现代信息系统中,数据库是一个集中存储数据的系统,它允许用户通过特定的查询语言,如SQL(Structured Query Language),来检索和管理数据。

weixin_28809949的博客 775

Java网页访问报错?手把手教你解决JRE插件缺失和浏览器拦截问题(附详细截图)

本文针对Java网页访问时常见的JRE插件缺失和浏览器拦截问题,提供了详细的诊断与解决方案。文章首先解释了问题根源在于现代浏览器出于安全考虑停止了对Java插件的支持,然后手把手指导用户确认Java安装、在控制面板配置安全站点列表,并针对Chrome、Edge、Firefox等主流浏览器的不同拦截机制给出了具体的应对策略,最后提供了系统性的故障排查清单,帮助用户彻底解决访问障碍。

weixin_29233857的博客 220

SQLserver数据库如何导出为Excel?

SQLserver数据库如何导出为Excel?

weixin_47246285的博客 4232

FreeSwitch采用mrcp协议对接科大讯飞asr和tts以及对话系统

FreeSwitch采用mrcp协议对接科大讯飞asr和tts对接过程

shanghaimoon的专栏 8839

C#中数据库数据如何导出至Excel表格

有时候需要将数据库的数据导出至Excel表格表格,以便进行查看和分析,那么如何导出呢?下面用代码来实现。     首先,新建一个工程,需要添加引用Microsoft.Office.Interop.Excel.dll,以Oracle数据库为例(只要读出DataTable或DataSet就行了,哪种数据库没关系)。 1、创建一个表格,并插入如下数据。 drop table TABLETESTEX

杨友山 4万+

零中频架构实战:用Matlab模拟AD9361收发信号(附完整代码)

本文详细介绍了如何使用Matlab模拟AD9361射频收发器的零中频架构,解决镜像干扰等关键挑战。通过完整的代码示例和系统级建模方法,帮助工程师掌握RFIC设计中的自适应校准算法和性能优化技巧,特别适用于SDR系统开发。

weixin_30733003的博客 541

配置思科交换机冗余链路汇聚

本文对交换机端口汇聚配置进行说明

istrangeboy&begin zero的博客 6684

将数据库的数据导出到Excel里面

今天我们来学习一下将数据库的数据导出到Excel里面。上次我讲到了将数据从Excel表格导入到数据库里面,这次我们学习一下将数据库的数据导出到Excel里面。首先我们打开开发工具。我们来到页面把导出的代码写一下: 在上面,我们给了导出按钮一个onclick事件的ExportToExcel,然后我们获取这个事件,写一下导出的方法。实现的效果图如下: 在写导出的时候,我们先来到控制器查询我们要导出...

weixin_44567381的博客 1万+

Unity 常见问题 之 打包编译的报错 Unable to sign the application; please provide passwords!

Unity 常见问题 之 打包编译的报错 Unable to sign the application; please provide passwords! 目录 Unity 常见问题 之 打包编译的报错 Unable to sign the application; please provide passwords! 一、简单介绍 二、问题描述 三、原因分析 四、可能的解决方法 方法一:取消 Keystore 设置即可 方法二:重新添加 Keystore 相关设置 一...

仙魁XAN 1万+

AnyLogic 数据处理实战(二):Java 数据处理与DataBase导出到 Excel 全流程

本文围绕 AnyLogic 软件,详细介绍了借助 Java 实现数据处理与数据写入到database,以及与 Excel 交互的完整流程。

JNY_W的博客 1795

【异常】Codybuddy Error Code: 14003 too many requests 限流报错问题排查与解决指南

14003报错本质为服务端限流拦截,并非账号封禁或程序致命故障,90%以上的场景可通过等待冷却+规范使用行为解决。通过本文的排查步骤,可快速恢复工具使用,同时规避后续重复触发该问题。

奶爸的编程之路,也就一周冷个三天 1253

【WRFDA教程第一期】运行观测预处理程序(OBSPROC)

运行观测预处理程序(OBSPROC)

WW、forever的博客 1893

Sybase数据库大量数据导出Excel

应客户要求,导出数据库中的数据为Excel,只在一个Sheet中,Excel中的内容要与数据库里的内容一致(主要针对日期型数据)。             由于之前接触过POI,对POI的一些特性还是有一定的了解的,因此顺其自然的用POI去解决这个问题。POI3.8版本之前的版本处理大量数据的导出Excel效果不是很理想,主要在与Excel2003版本单个Sheet的行限制为65536,大量数据

shanhuijava的专栏 4334

Qt Quick (QML) 老年人健康管理

通过 **Qt SQL** 模块将所有健康数据(用药记录、体检数据等)安全地存储在本地 **SQLite** 数据库中。你想用 **Qt C++** 结合 **Qt Quick** (QML) 来开发一个老年人健康管理软件,主要功能包含 **用药提醒** 和 **健康记录** (使用 `Qt SQL` 存储数据)。* **UI 框架**: Qt Quick (QML) - 用于构建流畅、动态的用户界面。**数据模型类 (models/MedicationReminder.h / .cpp)**

寒寒豆豆软件公司的博客 193

把服务器sql数据库导出excel文件,将mysql数据库数据以Excel文件的形式导出

最近在工作中,领导让从数据库中导出一些数据并存放到Excel表格中,网上有许多教程,下面是我总结的其中俩种方法。从数据库管理工具中导出(navicat)在navicat导出数据导Excel中还是比较简单的,因为是图形化界面,我们只需要一步一步的操作就可以了,而且利用navicat可以倒成各种类型的数据文件,非常方便1、首先选中需要导出的数据库,右键菜单中出现导出向导2、点击导出向导后出现需要导出的...

weixin_42510645的博客 1820

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Java将数据库表中数据导出至Excel表格

        在我们学习和使用Java的过程中,会有导出数据库中的数据(或其他数据)到表格中的需求。比如你建了一个博客网站,也写了很多篇博客,那么就想把写的所有博客导出到xls表格中。因为数据在服务器可能会面临数据丢失的风险(比如服务器重装系统,服务器未续费导致被停用等等),本篇博客就来讲讲如何把数据导出至xls表格。 第一步:首先需要下载jar包,这个jar包是Apache开发的,借助于这个...

qq_35750547的博客 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

数据库表结构导出excel

1:sql SELECT COLUMN_NAME 列名, COLUMN_TYPE 数据类型, DATA_TYPE 字段类型, CHARACTER_MAXIMUM_LENGTH 长度, IS_NULLABLE 是否为空, COLUMN_DEFAULT 默认值, COLUMN_COMME...

开心就好 6725

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

上一篇: 获取Excel单元格存储日期格式数据
下一篇: 从本地Excel文件下载数据
策马出凉州
博客等级 码龄7年 1粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值