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 …...

最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...

并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...

Ubuntu Cursor升级成v1.0
0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...

uniapp 小程序 学习(一)
利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 :开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置,将微信开发者工具放入到Hbuilder中, 打开后出现 如下 bug 解…...