JAVA数据导出为Excel
目录
一、导入依赖
二、使用的相关类
1、XSSFWorkbook
构造方法
创建表
操作表
保存表
样式和格式
日期处理
密码保护
其他
2、XSSFSheet
获取属性和信息
行操作
列操作
表的属性
合并单元格
保护表
页眉和页脚
注释
其它
3、XSSFRow
获取属性和信息
单元格操作
设置行高和默认列宽
其它方法
4、XSSFCell
获取单元格的内容
设置单元格的内容
单元格样式
单元格类型和属性
单元格注释
其它方法
三、代码和结果
1、代码
2、结果
一、导入依赖
<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.16</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.16</version>
</dependency>
二、使用的相关类
1、XSSFWorkbook
构造方法
| 方法 | 描述 |
| XSSFWorkbook() | 创建一个新的空白表 |
| XSSFWorkbook(InputStream is) | 从输入流加载现有的表 |
| XSSFWorkbook(String path) | 从指定文件路径加载现有的表 |
| XSSFWorkbook(OPCPackage pkg) | 使用 OPCPackage 对象创建表,这通常用于高级用途 |
创建表
| 方法 | 描述 |
| XSSFSheet createSheet(String sheetName) | 创建一个新的表,并指定表的名称 |
| XSSFSheet getSheetAt(int index) | 通过索引获取表 |
| XSSFSheet getSheet(String name) | 通过名称获取表 |
操作表
| 方法 | 描述 |
| int getNumberOfSheets() | 获取表的数量 |
| void removeSheetAt(int index) | 删除指定索引处的表 |
| XSSFSheet cloneSheet(int sheetIndex) | 克隆表 |
保存表
| 方法 | 描述 |
| void write(OutputStream out) | 将表内容写入输出流,通常用于将表保存到文件 |
| void write(File file) | 将表内容写入指定的文件 |
| void close() | 关闭表,释放资源 |
样式和格式
| 方法 | 描述 |
| XSSFCellStyle createCellStyle() | 创建一个新的单元格样式 |
| XSSFFont createFont() | 创建一个新的字体对象 |
| short createDataFormat() | 创建一个新的数据格式 |
日期处理
| 方法 | 描述 |
| void setCreationHelper(CreationHelper createHelper) | 设置表的 CreationHelper,用于日期处理和其他数据类型的转换 |
密码保护
| 方法 | 描述 |
| void lockStructure() | 锁定表的结构,防止用户对表的结构进行更改 |
| void unlockStructure() | 解锁表的结构,允许用户对表的结构进行更改 |
其他
| 方法 | 描述 |
| int getActiveSheetIndex() | 获取当前表的索引 |
| void setActiveSheet(int sheetIndex) | 设置当前表的索引 |
| XSSFFormulaEvaluator getCreationHelper().createFormulaEvaluator() | 用于计算公式的创建和计算器 |
2、XSSFSheet
获取属性和信息
| 方法 | 描述 |
| int getPhysicalNumberOfRows() | 获取表中的物理行数,即非空行的数量 |
| int getFirstRowNum() | 获取第一个行的索引,通常为0 |
| int getLastRowNum() | 获取最后一个行的索引 |
| String getSheetName() | 获取表的名称 |
行操作
| 方法 | 描述 |
| XSSFRow createRow(int rowIndex) | 创建一个新的行,指定行的索引 |
| XSSFRow getRow(int rowIndex) | 获取表中指定行索引的行对象 |
| void removeRow(XSSFRow row) | 从表中删除指定的行 |
| void shiftRows(int startRow, int endRow, int n) | 向下或向上移动表中的行 |
列操作
| 方法 | 描述 |
| int getColumnWidth(int columnIndex) | 获取指定列的宽度 |
| void setColumnWidth(int columnIndex, int width) | 设置指定列的宽度 |
表的属性
| 方法 | 描述 |
| boolean getDisplayFormulas() | 获取是否显示公式 |
| void setDisplayFormulas(boolean show) | 设置是否显示公式 |
合并单元格
| 方法 | 描述 |
| void addMergedRegion(CellRangeAddress region) | 合并单元格区域 |
| void addMergedRegionUnsafe(CellRangeAddress region) | 合并单元格区域(不检查冲突) |
| void removeMergedRegion(int index) | 移除合并单元格区域 |
保护表
| 方法 | 描述 |
| void protectSheet(String password) | 保护表并设置密码 |
| void unprotectSheet(String password) | 取消保护表(需要提供正确的密码) |
页眉和页脚
| 方法 | 描述 |
| Header getHeader() | 获取表的页眉 |
| Footer getFooter() | 获取表的页脚 |
注释
| 方法 | 描述 |
| XSSFRichTextString getSheetComment() | 获取表的注释 |
| void setSheetComment(XSSFRichTextString comment) | 设置表的注释 |
其它
| 方法 | 描述 |
| XSSFDrawing createDrawingPatriarch() | 创建绘图对象,用于插入图表和图形 |
| XSSFDataValidationHelper getDataValidationHelper() | 获取数据有效性帮助器,用于创建数据有效性约束 |
| void setPrintArea(int startColumn, int endColumn, int startRow, int endRow) | 设置要打印的区域 |
| boolean isSelected() | 检查表是否被选中 |
| void setSelected(boolean select) | 设置表是否被选中 |
3、XSSFRow
获取属性和信息
| 方法 | 描述 |
| int getRowNum() | 获取行的索引,从0开始 |
| int getPhysicalNumberOfCells() | 获取该行的物理单元格数量,即非空单元格的数量 |
单元格操作
| 方法 | 描述 |
| XSSFCell createCell(int columnIndex) | 创建一个新的单元格,指定单元格在行中的列索引 |
| XSSFCell getCell(int columnIndex) | 获取行中指定列索引的单元格 |
| void removeCell(XSSFCell cell) | 从行中删除指定的单元格 |
| int getFirstCellNum() | 获取第一个单元格的列索引 |
| int getLastCellNum() | 获取最后一个单元格的列索引,包括空单元格 |
设置行高和默认列宽
| 方法 | 描述 |
| void setHeight(short height) | 设置行的高度(以20分之1个点为单位) |
| void setZeroHeight(boolean zHeight) | 设置行是否为零高度(隐藏行) |
其它方法
| 方法 | 描述 |
| void shiftCellsRight(int firstCellNum, int lastCellNum, int step) | 将行中指定范围内的单元格向右移动 |
| void shiftCellsLeft(int firstCellNum, int lastCellNum, int step) | 将行中指定范围内的单元格向左移动 |
| void shiftCellsRight(int firstCellNum, int lastCellNum) | 将行中指定范围内的单元格向右移动一个位置 |
| void shiftCellsLeft(int firstCellNum, int lastCellNum) | 将行中指定范围内的单元格向左移动一个位置 |
4、XSSFCell
获取单元格的内容
| 方法 | 描述 |
| String getStringCellValue() | 获取单元格中的文本值,无论单元格中的内容是文本、数字、日期或其他数据类型,都会以字符串形式返回 |
| double getNumericCellValue() | 获取单元格中的数值(仅适用于数值类型的单元格) |
| boolean getBooleanCellValue() | 获取单元格中的布尔值(仅适用于布尔类型的单元格) |
| String getCellFormula() | 获取单元格中的公式 |
设置单元格的内容
| 方法 | 描述 |
| void setCellValue(double value) | 设置单元格的值为数值 |
| void setCellValue(String value) | 设置单元格的值为文本 |
| void setCellValue(boolean value) | 设置单元格的值为布尔值 |
| void setCellFormula(String formula) | 设置单元格的公式 |
单元格样式
| 方法 | 描述 |
| XSSFCellStyle getCellStyle() | 获取单元格的样式对象,以便修改单元格的样式 |
| void setCellStyle(XSSFCellStyle style) | 设置单元格的样式 |
单元格类型和属性
| 方法 | 描述 |
| int getCellType() | 获取单元格的类型,返回常量值(CellType) |
| boolean getBooleanCellValue() | 获取布尔类型的单元格值 |
| int getColumnIndex() | 获取单元格所在的列索引 |
单元格注释
| 方法 | 描述 |
| XSSFRichTextString getRichStringCellValue() | 获取富文本字符串对象(支持格式化文本) |
| XSSFRichTextString setCellValue(RichTextString value) | 设置单元格的富文本字符串值 |
其它方法
| 方法 | 描述 |
| void setCellType(int cellType) | 设置单元格的类型,可以是 CellType 常量之一 |
| void setCellStyle(CellStyle style) | 设置单元格的日期格式 |
| void setCellType(CellType cellType) | 设置单元格的类型,可以是 CellType 常量之一 |
| void setCellErrorValue(byte errorCode) | 设置单元格的错误值 |
| boolean isPartOfArrayFormulaGroup() | 检查单元格是否属于数组公式组 |
| void removeCellComment() | 移除单元格的注释 |
三、代码和结果
1、代码
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;public class Export {public static void main(String[] args){//表名:String sheetName = "test";//表头:String[] arr02 = {"姓名","年龄","成绩"};List<String> heaList = Arrays.asList(arr02);//写入文件路径:String filePath = "E:\\test\\"+sheetName+".xls";//数据List<String> data=new ArrayList<>();data.add("1");data.add("1");data.add("1");List<List<String>> contentList=new ArrayList<>();contentList.add(data);contentList.add(data);contentList.add(data);exportToExcel(sheetName,heaList,contentList,filePath);}/** sheetName:表名* heaaList:表头* contentList:表内容* filePath:写入文件地址* */public static void exportToExcel(String sheetName, List<String> heaList, List<List<String>> contentList, String filePath){//创建sheet页XSSFWorkbook workbook = new XSSFWorkbook();XSSFSheet sheet = workbook.createSheet(sheetName);//创建表头(第一行)XSSFRow row = sheet.createRow(0);for (int i = 0; i < heaList.size() ; i++) {XSSFCell cell = row.createCell(i);cell.setCellValue(heaList.get(i));}//创建表内容//List<List<String>>,一条内容存储多个列表对象for (int i = 0; i <contentList.size() ; i++) {row = sheet.createRow(i+1);for (int j = 0; j < contentList.get(i).size(); j++) {row.createCell(j).setCellValue(contentList.get(i).get(j));}}//写入文件File file = new File(filePath);try {//将文件保存到指定位置workbook.write(new FileOutputStream(file));System.out.println("写入文件成功");} catch (IOException e) {e.printStackTrace();}}}
2、结果

相关文章:
JAVA数据导出为Excel
目录 一、导入依赖 二、使用的相关类 1、XSSFWorkbook 构造方法 创建表 操作表 保存表 样式和格式 日期处理 密码保护 其他 2、XSSFSheet 获取属性和信息 行操作 列操作 表的属性 合并单元格 保护表 页眉和页脚 注释 其它 3、XSSFRow 获取属性和信息 单…...
【数据结构与算法 | 灵神题单 | 快慢指针(链表)篇】力扣876, 2095, 234
1. 力扣876:链表的中间节点 1.1 题目: 给你单链表的头结点 head ,请你找出并返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 示例 1: 输入:head [1,2,3,4,5] 输出:[3,4,…...
第十五届蓝桥杯图形化省赛题目及解析
第十五届蓝桥杯图形化省赛题目及解析 一. 单选题 1. 运行以下程序,角色会说( )? A、29 B、31 C、33 D、35 正确答案:C 答案解析: 重复执行直到m>n不成立,即重复执行直到m<n。所有当m小于或者 等于n时&…...
linux下NTP服务器实战(chrony软件)
linux下NTP服务器实战(chrony软件) 记录linux下NTP服务器搭建及相关管理操作,使用chrony软件包安装部署。相比ntp服务,Chrony服务适用于更高精度、更高稳定性、自动化等场景。 1. 安装 chrony 在大多数Linux发行版上,chrony可以通过包管理…...
Java设计模式之命令模式介绍和案例示范
一、命令模式简介 命令模式(Command Pattern)是一种行为型设计模式,它将请求封装为一个对象,从而使你可以用不同的请求对客户端进行参数化、对请求排队或记录日志,以及支持可撤销的操作。命令模式的核心思想是将发出请…...
Leetcode面试经典150题-74.搜索二维矩阵
解法都在代码里,不懂就留言或者私信 二分查找,比较简单 class Solution {/**解题思路:每一行有序、每一列也有序,只是整体不是严格有序的,那我们需要找一个点,只能往两个方向走,往一个方向走是…...
【数字集成电路与系统设计】基本的组合逻辑电路
目录 一、简单例子引入 1.1 端口声明 1.1.2 Verilog实现 1.1.3 Chisel实现 逐行解释 1.2 内部逻辑实现 1.2.1 Verilog实现 1.2.2 Chisel实现 Chisel 关键点解释 1.3 常用的硬件原语 二、Chisel主要数据类型介绍 2.1 数据类型 2.2 数据宽度 2.3 数据转换 2.4 运算…...
11. 建立你的第一个Web3项目
11. 建立你的第一个Web3项目 在这一部分,我们将带你一步步地建立一个简单的Web3项目,从环境搭建到智能合约的创建与部署,再到开发一个去中心化应用(dApp)并与智能合约交互。这是你迈向Web3开发的第一步。 1. 环境搭建…...
衡石分析平台使用手册-容器部署
容器部署 本文介绍如何在容器上部署 HENGSHI SENSE,以及部署后如何进行版本升级和数据备份。 部署前准备工作 单机部署前,请完成如下准备工作。 1.检查 docker 的环境。需要满足 Docker 版本 > 17.09安装 docker-compose。 2.获取并导入离线…...
静态库,动态库以及makefile基础
一.静态(链接)库 libfun.a 静态链接进可执行程序 可执行程序偏大 运行时只需要可执行程序即可 生成静态库步骤 gcc -c fun.c -o fun.o ar rcv libfun.a fun.o //需要用.o文件生成数据库 运行 gcc main.c libfun.a 二.动态库 libfun.so 动…...
Python基础语法(1)上
常量和表达式 我们可以把 Python 当成一个计算器,来进行一些算术运算。 print(1 2 - 3) print(1 2 * 3) print(1 2 / 3) 这里我们可能会有疑问,为什么不是1.6666666666666667呢? 其实在编程中,一般没有“四舍五入”这样的规则…...
使用 Python/java/go做一个微信机器人
E云是一套完整的的第三方服务平台,包含微信API服务、企微API服务、SCRM系统定制、企微系统定制、服务类软件定制等模块,本文档主要讲述个微API服务相关,以下简称API,它能处理用户微信中的各种事件,提供了开发者与个微对…...
【北京迅为】iTOP-i.MX6开发板使用手册第四部分固件编译第十四章非设备树Android4.4系统编译
可根据用户需求更换,百变定制,高端产品无忧! 迅为IMX6Q兼容四核商业级 、双核商业级、四核工业级 、更可提供i.MX6Q家族PLUS版本核心板。 核心板采用十层PCB沉金盲埋设计,更能保证电磁兼容与系统稳定。 公众号:迅为电…...
测评造假?Mistral首个多模态模型Pixtral 12B发布
测评造假?Mistral首个多模态模型Pixtral 12B发布! 近日,法国人工智能(AI)初创公司Mistral于9月11日宣布推出其首款多模态AI大模型——Pixtral 12B,成功吸引了全球科技界的广泛关注。这款集图像与文本处理能…...
【Java-简单练习题】
1.”AABBBCCC“>>"A2B3C3" public class Test6 {public static void main(String[] args) {String ns "AABBBCCCC";String retcompress(ns);System.out.println(ret);}public static String compress(String str) {StringBuilder ret new StringB…...
Notepad++ 下载安装教程
目录 1.下教程 2.安装教程 1.下教程 Downloads | Notepad (notepad-plus-plus.org) 进入下载地址后选择最新版点击连接 点击链接后,向下滑动,下载适合自己电脑版本的安装包 这里大家没有梯子可能打不开页面,可以直接从本文开头下载。 2.安…...
shader 案例学习笔记之smoothstep函数
参考:smoothstep 用来生成0-1的平滑过渡值 smoothstep函数源码实现: float smoothstep(float t1, float t2, float x) {// Scale, bias and saturate x to 0..1 rangex clamp((x - t1) / (t2 - t1), 0.0, 1.0); // Evaluate polynomialreturn x * x *…...
大模型的第一个杀手级应用场景出来了
大家终于都意识到大模型首先改变的是软件行业自己,而软件的根基是代码生成。代码生成第一波就是AI辅助开发,这个会是大模型第一个杀手级应用。大家苦苦逼问自己的大模型杀手级应用,为什么会是辅助编程,这里说下什么: 必…...
不允许有程序员不知道这款AI代码扩写工具
01CodeGeeX编程大模型 在介绍什么是codeGeeX之前,先上图。 想象一下,自己写代码的时候旁边有个专家助手,随时跟你解释前面别人写的代码是什么意思,有什么缺陷。在你自己写的时候也可以每一步进行代码提示和代码扩写,是…...
java 的list集合排序自定义元素
在 Java 中,可以对包含自定义元素的List集合进行排序。通常可以使用Collections.sort()方法结合自定义的比较器来实现。 一、定义包含自定义元素的类 假设我们有一个表示学生的类Student: class Student {private int id;private String name;private …...
网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...
ubuntu22.04有线网络无法连接,图标也没了
今天突然无法有线网络无法连接任何设备,并且图标都没了 错误案例 往上一顿搜索,试了很多博客都不行,比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动,重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...
【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道
文/法律实务观察组 在债务重组领域,专业机构的核心价值不仅在于减轻债务数字,更在于帮助债务人在履行义务的同时维持基本生活尊严。湖北理元理律师事务所的服务实践表明,合法债务优化需同步实现三重平衡: 法律刚性(债…...
高考志愿填报管理系统---开发介绍
高考志愿填报管理系统是一款专为教育机构、学校和教师设计的学生信息管理和志愿填报辅助平台。系统基于Django框架开发,采用现代化的Web技术,为教育工作者提供高效、安全、便捷的学生管理解决方案。 ## 📋 系统概述 ### 🎯 系统定…...
PH热榜 | 2025-06-08
1. Thiings 标语:一套超过1900个免费AI生成的3D图标集合 介绍:Thiings是一个不断扩展的免费AI生成3D图标库,目前已有超过1900个图标。你可以按照主题浏览,生成自己的图标,或者下载整个图标集。所有图标都可以在个人或…...
GeoServer发布PostgreSQL图层后WFS查询无主键字段
在使用 GeoServer(版本 2.22.2) 发布 PostgreSQL(PostGIS)中的表为地图服务时,常常会遇到一个小问题: WFS 查询中,主键字段(如 id)莫名其妙地消失了! 即使你在…...
