Java实现数据库数据到Excel的高效导出
在数据处理和分析工作中,经常需要将数据库中的数据导出到Excel文件中。本文将提供一个Java实现的示例,展示如何边从数据库读取数据,边将其写入Excel文件,同时注重内存效率。
环境配置:
- Java 1.8 或更高版本
- MySQL 5.7(或其他数据库)
- Apache POI 5.2.3(用于Excel操作)
- Maven(项目管理工具)
确保在pom.xml中添加了Apache POI的依赖。
示例代码:
可以在pom.xml文件中添加以下依赖:
<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.3</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.3</version>
</dependency>
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;public class DatabaseToExcelStreaming {public static void main(String[] args) {// 数据库连接配置Properties properties = new Properties();properties.put("user", "your_username");properties.put("password", "your_password");String jdbcUrl = "jdbc:mysql://localhost:3306/your_database";String query = "SELECT id, name, ... FROM your_table"; // 你的查询// Excel文件的路径String excelFilePath = "output.xlsx";// 使用SXSSFWorkbook创建一个基于流的写入器,适用于大文件try (SXSSFWorkbook workbook = new SXSSFWorkbook()) {Sheet sheet = workbook.createSheet("Data");// 创建标题行Row titleRow = sheet.createRow(0);titleRow.createCell(0).setCellValue("ID");titleRow.createCell(1).setCellValue("Name");// 可以继续添加其他列的标题...// 加载数据库驱动类Class.forName("com.mysql.cj.jdbc.Driver");try (Connection connection = DriverManager.getConnection(jdbcUrl, properties);PreparedStatement preparedStatement = connection.prepareStatement(query);ResultSet resultSet = preparedStatement.executeQuery()) {int rowNum = 1; // 行号,从1开始,用于跳过标题行int maxRowInSheet = workbook.getSpreadsheetLocale().getMaxRows(); // 最大行数限制while (resultSet.next() && rowNum < maxRowInSheet) {Row row = sheet.createRow(rowNum++);row.createCell(0).setCellValue(resultSet.getInt("id"));row.createCell(1).setCellValue(resultSet.getString("name"));// 可以继续添加其他列的数据...// 每写入一定数量的行后,自动flush,减少内存占用if (rowNum % 1000 == 0) {workbook.write(new FileOutputStream(excelFilePath));workbook.dispose();workbook = new SXSSFWorkbook();sheet = workbook.createSheet("Data");}}// 写入剩余的数据workbook.write(new FileOutputStream(excelFilePath));System.out.println("数据已写入Excel文件:" + excelFilePath);} catch (IOException | ClassNotFoundException | SQLException e) {e.printStackTrace();}} catch (IOException e) {e.printStackTrace();}}
}
代码解释: 本示例使用了Apache POI的SXSSF(Streaming XLSX)来创建可以在内存使用较低时处理大量数据的Excel文件。代码中详细注释了每一步的操作。
结果展示: 执行上述代码后,将在指定路径生成一个Excel文件,其中包含了数据库表中的所有数据。
总结: 本文提供了一个高效的Java实现方法,用于将数据库数据导出到Excel文件。使用SXSSFWorkbook可以显著减少内存消耗,特别适合处理大规模数据。希望这个示例对需要进行数据导出的开发者有所帮助。
额外资源:
- Apache POI 官方文档:Apache POI Documentation
- MySQL JDBC 驱动使用指南
相关文章:
Java实现数据库数据到Excel的高效导出
在数据处理和分析工作中,经常需要将数据库中的数据导出到Excel文件中。本文将提供一个Java实现的示例,展示如何边从数据库读取数据,边将其写入Excel文件,同时注重内存效率。 环境配置: Java 1.8 或更高版本MySQL 5.7…...
python之matplotlib (8 极坐标)-圆与心
极坐标 极坐标图像的绘制类似于三维图像的绘制,只需要将projection参数由3d改为polar即可。 import numpy as np import matplotlib.pyplot as plt figplt.figure() axfig.add_subplot(projectionpolar)theta np.linspace(0, 2 * np.pi, 100) r np.sin(the…...
Kubernetes Pod调度基础
在传统架构中,我们总在考虑或者面临一个问题,我们的应用需要部署在哪里,我们的应用下载在哪里运行着?有一个服务不可访问了,去哪里排査?诸如此类的问题总是会出现在工作中。 但是在使用 Kubernetes 部署应用后ÿ…...
80页WORD方案深入了解大数据治理+大数据资产管理+数据运营
文档是一份80页可编辑的企业大数据智能管理与治理平台建设项目技术方案标书文档,涵盖了从项目需求分析、技术方案、建设方案、服务方案到类似案例介绍等多个方面的内容。 1. 项目需求分析 项目建设目标:旨在实现数据的可视化,确保决策者、行…...
OCC安装、VS2019编译运行(新手教程)
OCC安装、VS2019编译运行(新手教程) 简介1、OpenCasCade的下载和安装官网下载安装2、OpenCasCade的运行和编译(VS2019)修改配置文件环境变量配置3、验证代码项目配置运行cpp文件简介 作为一个刚接触OCC的程序员,可能会不知所措,无从下手,甚至在OCC的安装使用都困难重重…...
Mojo 实现排序功能
sort排序 实现排序功能。 您可以从包中导入这些 API。例如:algorithm from algorithm.sort import sortpartition partition[type: AnyRegType, cmp_fn: fn[AnyRegType]($0, $0, /) capturing -> Bool](buff: Pointer[*"type", 0], k: Int, size: …...
信息学奥赛一本通编程启蒙题解(3031~3035)
前言 Hello大家好我是文宇 正文 3031 #include<bits/stdc.h> using namespace std; double n,m,x; int main(){cin>>n>>m;xn-m*0.8;cout<<fixed<<setprecision(2)<<x;return 0; } 3032 #include<bits/stdc.h> using namespace…...
字符函数内存函数———C语言
字符分类函数 头文件: ctype.h 函数功能iscntrl判断字符是否为控制字符isspace判断字符是否为空白字符(空格,换页、换行、回车、制表符或垂直制表符)isdigit判断字符是否为十进制数字isxdigit判断字符是否为十六进制数字(0-9)(a…...
c语言跨文件传输数据
在 C 语言中,可以通过以下几种方式获取其他 C 文件中定义的变量: 一、使用 extern 关键字 在需要获取变量的文件中,使用extern关键字声明该变量。 例如,如果在other.c文件中有一个全局变量int globalVar;,在当前文件中…...
企业文件防泄密怎么做?10款透明加密软件排行榜
在信息时代,企业的核心竞争力往往体现在其拥有的知识和信息上,而企业文件的安全性直接关系到这些信息的保护。文件防泄密已成为企业管理中的重要议题,透明加密技术因其无缝集成和高效保护的特性,成为企业防泄密的首选方案。2024年…...
AI编程工具的力量:以AWS Toolkit与百度Comate为例,加速程序员开发效率
在当今的数字化转型浪潮中,人工智能(AI)技术不仅重塑了众多行业,也为软件开发领域带来了革命性的变化。AI编程工具,凭借其智能化的特性,正在成为程序员提高开发效率、优化代码质量和加速产品迭代的重要助力…...
smallpdf: 免费高效的PDF水印添加工具
引言 在数字文档管理和分享的过程中,保护版权和确保文档的原创性变得尤为重要。PDF文件作为一种广泛使用的格式,经常需要添加水印来表明所有权或提醒查看者注意文档的敏感性。本文将介绍一款名为smallpdf的免费工具,它能够轻松地为PDF文件添…...
java整合modbusRTU与modbusTCP
理解 Modbus TCP 报文格式,Modbus TCP 报文格式如下: | Transaction ID (2 bytes) | Protocol ID (2 bytes) | Length (2 bytes) | Unit ID (1 byte) | Function Code (1 byte) | Data (N bytes) |Transaction ID:标识事务的唯一标识符,确保正确的 Transaction ID:每个请求…...
四、Docker使用
1. 快速入门 1.1. Docker背景介绍 Docker是一个开源的平台,用于开发、交付和运行应用程序。它能够在Windows,macOS,Linux计算机上运行,并将某一应用程序及其依赖项打包至一个容器中,这些容器可以在任何支持Docker的环…...
杰发科技AC7840——CAN通信简介(8)_通过波特率和时钟计算SEG_1/SEG_2/SJW/PRESC
通过公式计算 * 波特率和采样点计算公式:* tSeg1 (S_SEG_1 2); tSeg2 (S_SEG_2 1).* BandRate (SCR_CLK / (S_PRESC 1) / ((S_SEG_1 2) (S_SEG_2 1))), SCR_CLK 为CAN 模块源时钟* SamplePoint (tSeg1 / (tSeg1 tSeg2)). {0x0D, 0x04, 0x04, 0x3B},…...
开发日记-EaxyExcel修改模板sheet名称
引入pom: <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel-core</artifactId><version>3.1.1</version><scope>compile</scope></dependency> 编写自定义拦截器: impo…...
微软AI人工智能认证有哪些?
微软提供的人工智能认证主要包括以下几个方面: Azure AI Fundamentals(AI900认证):这是一个基础认证,旨在展示与Microsoft Azure软件和服务开发相关的基本AI概念,以创建AI解决方案。它面向具有技术和非技术…...
基于缓存提高Java模板文件处理性能:减少磁盘I/O的实践与探索
1、优化背景及动机 背景 线上有一个需求:读取模板文件,并根据不同的业务将数据写入模板文件,生成一个新的文件。模板文件本身是不会变的,所以每次生成文件都要去读取一遍模板文件,会有很多的磁盘IO操作,并…...
C/C++ 线程局部存储(TLS)
在C或C中,线程局部存储(Thread-Local Storage,简称TLS)是一种用于存储线程特有数据的方法。这意味着每个线程都可以访问它自己的变量实例,而不会影响到其他线程中的同名变量。这在多线程程序中非常有用,因为…...
碰撞检测 | 基于ROS Rviz插件的多边形碰撞检测仿真平台
目录 0 专栏介绍1 基于多边形的碰撞检测2 碰撞检测仿真平台搭建2.1 多边形实例2.2 外部服务接口2.3 Rviz插件化 3 案例演示3.1 功能介绍3.2 绘制多边形 0 专栏介绍 🔥课设、毕设、创新竞赛必备!🔥本专栏涉及更高阶的运动规划算法轨迹优化实战…...
如何一站式管理Mac周边所有设备的电池电量:AirBattery终极指南
如何一站式管理Mac周边所有设备的电池电量:AirBattery终极指南 【免费下载链接】AirBattery Get the battery level of all your devices on your Mac and put them on the Dock / Status Bar / Widget! && 在Mac上获取你所有设备的电量信息并显示在Dock / …...
FRCRN开源模型部署指南:国产昇腾Ascend 910B适配与性能实测
FRCRN开源模型部署指南:国产昇腾Ascend 910B适配与性能实测 1. 项目概述与背景 FRCRN(Frequency-Recurrent Convolutional Recurrent Network)是阿里巴巴达摩院在ModelScope社区开源的单通道语音降噪模型,专门针对16kHz采样率的…...
从休眠到唤醒:深入解读AUTOSAR CanNm的Bus Load Reduction与Immediate Restart机制
从休眠到唤醒:深入解读AUTOSAR CanNm的Bus Load Reduction与Immediate Restart机制 在新能源汽车和智能座舱快速发展的今天,车载电子系统的功耗优化与实时响应能力成为工程师面临的核心挑战。AUTOSAR CanNm模块作为车载网络管理的关键组件,其…...
5步打造高效知识管理系统:Obsidian模板库实战指南
5步打造高效知识管理系统:Obsidian模板库实战指南 【免费下载链接】OB_Template OB_Templates is a Obsidian reference for note templates focused on new users of the application using only core plugins. 项目地址: https://gitcode.com/gh_mirrors/ob/OB_…...
PicView图片浏览器完整指南:从零开始掌握高效图片管理技巧
PicView图片浏览器完整指南:从零开始掌握高效图片管理技巧 【免费下载链接】PicView Fast, free and customizable image viewer for Windows 10 and 11. 项目地址: https://gitcode.com/gh_mirrors/pi/PicView PicView是一款专为Windows 10和11设计的快速、…...
暗黑破坏神2存档编辑器的创意实验:开启你的游戏世界无限可能
暗黑破坏神2存档编辑器的创意实验:开启你的游戏世界无限可能 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 你是否曾想过在暗黑破坏神2的世界里创造属于自己的传奇?当传统的游戏进程无法满足你的创意需求…...
避坑指南:单相有源逆变电路Simulink仿真中那些教科书没讲的细节(附反电动势设置模板)
单相有源逆变电路Simulink仿真实战:从参数配置到波形调试的工程化指南 第一次在Simulink里搭建单相有源逆变电路时,看着报错窗口弹出的"Algebraic loop detected"提示,我盯着屏幕足足愣了五分钟。教科书上明明写着"连接好器件…...
GEE实战指南:Sentinel-2多光谱植被指数批量计算与优化
1. 为什么需要植被指数? 植被指数是遥感领域用来量化植被生长状态的核心指标。简单来说,就像医生用体温计判断病人是否发烧一样,我们可以通过卫星数据计算出的植被指数,快速了解一片区域的植被健康状况。Sentinel-2卫星提供的多光…...
告别pip安装失败:在Jetson Nano(ARM64)上手动编译PyQt5 5.15.2的完整记录
在Jetson Nano(ARM64)上手动编译PyQt5 5.15.2的完整指南 当你在Jetson Nano这样的ARM64架构设备上尝试用pip安装PyQt5时,很可能会遇到各种兼容性问题。作为一款强大的Python GUI库,PyQt5在嵌入式开发中有着广泛的应用场景&#x…...
终极指南:简单快速解决C盘爆红的Windows清理工具
终极指南:简单快速解决C盘爆红的Windows清理工具 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你的C盘是不是又红了?电脑卡得像蜗牛爬&a…...
