Java中导出Excel步骤总结(案例学习)

news2024/12/26 23:24:21

【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行!

博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结,感谢你的阅读和关注,希望我的博客能帮助到更多的人,分享获取新知,大家一起进步!

吾等采石之人,应怀大教堂之心,愿我们奔赴在各自的热爱里…

一、步骤总结

Java中导出Excel通常需要以下几个步骤:

在这里插入图片描述

  • 创建工作簿对象,一般使用Apache POI库的Workbook类,可以创建XSSFWorkbook或HSSFWorkbook对象;
  • 创建工作表对象,使用Workbook对象的createSheet()方法;
  • 创建行对象,使用Sheet对象的createRow()方法;
  • 创建单元格对象,使用Row对象的createCell()方法;
  • 设置单元格的值,使用Cell对象的setCellValue()方法;
  • 设置单元格的样式,使用CellStyle对象和Font对象;
  • 输出工作簿到文件或输出流,使用Workbook对象的write()方法。

具体实现上,可以根据数据源的不同(如List、Map、Java对象等)选择不同的方法来遍历数据源并写入Excel表格。以下是一个简单的示例代码:

// 创建工作簿对象
Workbook workbook = new XSSFWorkbook();
// 创建工作表对象
Sheet sheet = workbook.createSheet("Sheet1");
// 创建行对象
Row row = sheet.createRow(0);
// 创建单元格对象
Cell cell = row.createCell(0);
// 设置单元格的值
cell.setCellValue("Hello, World!");
// 创建单元格样式和字体对象
CellStyle style = workbook.createCellStyle();
Font font = workbook.createFont();
font.setBold(true);
style.setFont(font);
// 设置单元格的样式
cell.setCellStyle(style);
// 输出工作簿到文件或输出流
FileOutputStream fileOutputStream = new FileOutputStream("output.xlsx");
workbook.write(fileOutputStream);
fileOutputStream.close();

二、多sheet页导出

总结:Java中多个sheet页的导出就是先创建第一个sheet页,再创建第二个sheet页。。

// 创建工作簿对象
Workbook workbook = new XSSFWorkbook();

// 创建第一个工作表并设置名称
Sheet sheet1 = workbook.createSheet("Sheet1");

// 在第一个工作表上添加数据
Row row1 = sheet1.createRow(0);
Cell cell1 = row1.createCell(0);
cell1.setCellValue("这是第一个工作表的第一个单元格");

// 创建第二个工作表并设置名称
Sheet sheet2 = workbook.createSheet("Sheet2");

// 在第二个工作表上添加数据
Row row2 = sheet2.createRow(0);
Cell cell2 = row2.createCell(1);
cell2.setCellValue("这是第二个工作表的第二个单元格");

// 输出工作簿到文件或输出流
FileOutputStream fileOutputStream = new FileOutputStream("output.xlsx");
workbook.write(fileOutputStream);
fileOutputStream.close();

在上述示例中,我们首先创建了一个XSSFWorkbook对象,接着使用createSheet()方法创建了两个Sheet对象。然后,我们在第一个Sheet对象上创建了一个单元格并设置了单元格的值,而在第二个Sheet对象上创建了另一个单元格并设置了单元格的值。最后,我们将工作簿对象输出到文件或输出流中。

需要注意的是,由于Excel文件的工作表数量存在限制,因此在实际应用中需要根据需求来决定创建的工作表数量。同时,我们也可以使用getSheet()方法来访问已经存在的工作表。例如,如果第一个Sheet对象已经存在,那么可以使用以下代码来访问它:

Sheet sheet1 = workbook.getSheet("Sheet1");

📖☕️🌊📝📚🎩🚀
📣非常感谢你阅读到这里,如果这篇文章对你有帮助,希望能留下你的点赞👍 关注❤️ 分享👥 留言💬thanks!!!

📚愿我们奔赴在各自的热爱里!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/615016.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

怎么把伴奏提取出来?分享两个方法给大家~

对于音乐制作人和音乐爱好者而言,创作个人音乐作品是一项令人兴奋的体验。然而,有时我们希望使用一首现有歌曲的伴奏来创作自己的音乐作品,但却无法找到原版伴奏。为了解决这一难题,现在可以使用记灵在线工具来提取音频伴奏。本文…

瞬息全宇宙:苹果发布虚拟现实头显Vision Pro

WWDC23巅峰时刻 熬夜看了WWDC苹果发布会,传闻了N年的苹果MR(增强现实)产品,终于来了。 One More Thing,库克说出了这句话,巅峰时刻终于到来! 新的交互 名字叫Vision Pro,虽然这名…

《计算机网络——自顶向下方法》精炼——4.1-4.3.0

书读得越多而不假思索,你就会觉得你知道的很多;而当你读书而思考的越多的时候,你就会越清楚的看到,你知道的还很少——伏尔泰 文章目录 概述转发、路由选择网络服务模型 虚电路和数据报网络虚电路网络数据报网络 路由器工作原理 概…

chatgpt赋能python:Python如何出图

Python如何出图 作为一种广泛使用的编程语言,Python不仅仅可以用于数据分析、机器学习等领域,还可以用来生成图像。在这篇文章中,我们将介绍Python如何出图,并将重点放在与SEO相关的方面。 1. Python出图的基本原理 Python有多…

刷题记录:哈希 | leetcode-2352. 相等行列对 2023/6/6

2352. 相等行列对 这题还是非常简单的。如果用模拟的方法,时间复杂度要达到O(n^3)了,感觉不太可。 这回学聪明了,没有一上来就想着暴力模拟。用哈希的办法,可以把时间复杂度降为O(n^2)。 我的思路是先转置矩阵,再用…

Matlab论文插图绘制模板第99期—正负柱状图

在之前的文章中,分享了很多Matlab柱状图的绘制模板: 进一步,再来分享一种特殊的柱状图:正负柱状图。 先来看一下成品效果: 特别提示:本期内容『数据代码』已上传资源群中,加群的朋友请自行下载…

HTML+JS 实现手机号码归属地查询功能

手机号码归属地 API 是一种提供号码归属地信息的接口,它通过与运营商和电信数据库交互,根据手机号码查询相关归属地信息并返回结果。通过使用手机号码归属地API,开发者可以轻松地集成号码归属地查询功能到他们的应用程序和服务中,…

简介- 谷粒商城项目微服务架构图

目录 项目前置知识一、前后端分离开发,分为 内网部署 和 外网部署。二、用户是通过使用 客户端 来完成各种的功能三、网关的作用四、Sentiel组件五、Feign组件六、OAuth2.0认证中心七、SpringSecurity组件八、关于数据存储的解决方案九、定位bug十、注册中心十一、配…

Java 进阶 -- Lambda 表达式

Lambda Expressions 匿名类(anonymous classes)的一个问题是,如果匿名类的实现非常简单,比如一个只包含一个方法的接口,那么匿名类的语法可能会显得笨拙和不清晰。在这些情况下,您通常试图将功能作为参数传…

Spark RDD计算总分与平均分

文章目录 一,提出任务二,实现思路三,准备工作1、启动HDFS服务2、启动Spark服务3、在本地创建成绩文件4、将成绩文件上传到HDFS 四,完成任务1、在Spark Shell里完成任务(1)读取成绩文件,生成RDD&…

从Java BIO到NIO再到多路复用,看这篇就够了

从一次优化说起 近期优化了一个老的网关系统,在dubbo调用接口rt1000ms时吞吐量提升了25倍,而线程数却由64改到8。其他的优化手段不做展开,比较有意思的是为什么线程数减少,吞吐量却可以大幅提升?这就得从IO模型说起&a…

消息队列kafka使用技巧和常见问题

目录 【消息队列概述】 【kafka】 消息丢失问题 消息重复问题 消费顺序问题 消息积压问题 kafka集群部署 【消息队列概述】 消息队列主要解决应用耦合、异步消息、流量削锋等问题,是大型分布式系统不可缺少的中间件。消息生产者 只管把消息发布到 MQ 中而不…

【CMake 入门与进阶(4)】 CMakeLists.txt 语法规则基础及部分常用指令-续(附使用代码)

由于篇幅问题本篇接着上文继续介绍 CMakeLists.txt 语法规则基础及常用指令。 aux_source_directory aux_source_directory 命令会查找目录中的所有源文件&#xff0c;其命令定义如下&#xff1a; aux_source_directory(<dir> <variable>)从指定的目录中查找所有…

开发者工具调试

Console控制台 F12打开控制台 选择其他tab面板时&#xff0c;ESC打开Console面板enter直接执行Console的代码&#xff0c;shiftEnter输入多行代码 Source面板 左键单机行号设置断点&#xff0c;或在代码中添加debugger;右键单机行号设置条件断点&#xff08;条件表达式为tr…

PowerShell install 一键部署mariadb10.11

mariadb MariaDB数据库管理系统是MySQL的一个分支&#xff0c;主要由开源社区在维护&#xff0c;采用GPL授权许可 MariaDB的目的是完全兼容MySQL&#xff0c;包括API和命令行&#xff0c;使之能轻松成为MySQL的代替品。在存储引擎方面&#xff0c;使用XtraDB来代替MySQL的Inno…

ChatGPT 国内镜像网站大全(含GPT-4.0版本)之什么年代还在写传统文章。

前言&#xff1a; 临近期末&#xff0c;大量水课的节课作业都是论文&#xff0c;一篇就是几千字&#xff0c;这对于还要复习专业课的我们可以说是压力巨大&#xff1a;心理健康论文&#xff0c;安全教育论文&#xff0c;大学语文论文&#xff0c;书法赏析论文&#xff0c;劳动…

小议C++函数签名与模板返回类型

题记&#xff1a;什么事情都要追问一个为什么&#xff0c;真正理解了为什么&#xff0c;才能活学活用。 代码1 下面的代码能编译通过吗&#xff1f; #include <stdio.h> #include <stdlib.h>class X { public:int *get() { return new int(); }double *get() { r…

MATLAB矩阵的分解函数与案例举例

系列文章目录 MATLAB当中线性方程组、不定方程组、奇异方程组、超定方程组的介绍 MATLAB语句实现方阵性质的验证 MATLAB绘图函数的相关介绍——海底测量、二维与三维图形绘制​​​​​​ MATLAB求函数极限的简单介绍 文章目录 前言 1. 奇异值分解&#xff08;SVD&#x…

C++类和对象-4

在上篇C类和对象的博客中&#xff0c;我们讲述了析构函数、拷贝构造函数、浅拷贝和深拷贝的内容&#xff0c;我们紧接上文&#xff0c;开始讲述接下来的文章。 目录 1.this指针 1.1引入 1.2内容 1.3特征 1.4用法 2.静态成员 2.1内容 2.2静态数据成员 2.3静态成员函数…

Vue.js 中的国际化支持是什么?如何进行国际化支持?

Vue.js 中的国际化支持是什么&#xff1f;如何进行国际化支持&#xff1f; Vue.js 是一款流行的前端框架&#xff0c;它提供了许多方便的工具和 API&#xff0c;用于构建交互式的用户界面。其中&#xff0c;国际化支持是 Vue.js 中重要的一部分&#xff0c;它可以让我们轻松地…