当前位置: 首页 > news >正文

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 驱动使用指南
http://www.lryc.cn/news/429926.html

相关文章:

  • python之matplotlib (8 极坐标)-圆与心
  • Kubernetes Pod调度基础
  • 80页WORD方案深入了解大数据治理+大数据资产管理+数据运营
  • OCC安装、VS2019编译运行(新手教程)
  • Mojo 实现排序功能
  • 信息学奥赛一本通编程启蒙题解(3031~3035)
  • 字符函数内存函数———C语言
  • c语言跨文件传输数据
  • 企业文件防泄密怎么做?10款透明加密软件排行榜
  • AI编程工具的力量:以AWS Toolkit与百度Comate为例,加速程序员开发效率
  • smallpdf: 免费高效的PDF水印添加工具
  • java整合modbusRTU与modbusTCP
  • 四、Docker使用
  • 杰发科技AC7840——CAN通信简介(8)_通过波特率和时钟计算SEG_1/SEG_2/SJW/PRESC
  • 开发日记-EaxyExcel修改模板sheet名称
  • 微软AI人工智能认证有哪些?
  • 基于缓存提高Java模板文件处理性能:减少磁盘I/O的实践与探索
  • C/C++ 线程局部存储(TLS)
  • 碰撞检测 | 基于ROS Rviz插件的多边形碰撞检测仿真平台
  • nginx实验
  • 新技术能够区分真实照片和 AI 伪造图片,但为何平台没有使用?|TodayAI
  • 测量 Redis 服务器的固有延迟
  • 【JVM】JVM内存模型与操作系统内存模型(一)
  • 构建基于LLM的应用程序——为您的应用程序选择合适的LLM
  • raksmart站群服务器多IP配置要求
  • 【Web IDE】WebContainer容器在浏览器中启动运行nodejs并使用vite启动项目
  • Linux 多线程
  • C语言编写三子棋游戏:从概念到思路到实现
  • React.js如何使用Bootstrap
  • 深入解析:Redis与Nacos分布式锁在业务中的具体应用