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

【数学建模】2024数学建模国赛经验分享
文章目录 一、关于我二、我的数模历程三、经验总结: 一、关于我 我的CSDN主页:https://gxdxyl.blog.csdn.net/ 2020年7月(大二结束的暑假)开始在CSDN写作: 阿里云博客专家: 接触的领域挺多的ÿ…...

Scala尾递归解决爆栈问题
引言 我在上篇中详细的讲了递归的一系列问题,多路递归,爆栈问题,尾递归优化等,今天就实际演示一下尾递归是如何解决爆栈问题的,以及它的原理是什么? 支持尾递归优化的语言 尾递归是一种特殊的递归形式,如果…...

【观察者】设计模式:构建灵活且响应式的软件系统
引言 在软件开发中,我们经常面临需要在多个对象之间进行通信的挑战。特别是当一个对象的状态发生变化时,我们希望所有依赖于这个状态的对象都能自动更新。这就是观察者设计模式大显身手的地方。 简介 观察者模式是一种行为设计模式,它定义…...

开源网安斩获CCIA中国网络安全创新创业大赛总决赛三等奖
近日,由中央网信办指导,中国网络安全产业联盟(CCIA)主办的2024年中国网络安全创新创业大赛总决赛及颁奖典礼在国家网络安全宣传周落下帷幕。开源网安“AI代码审核平台CodeSec V4.0” 凭借在AI方向的技术创新、技术突破及功能应用创…...

进程的同步与互斥
目录 一、进程同步 二、进程互斥 1.临界资源访问代码: ①进入区 ②临界区 ③退出区 ④剩余区 注: 2.互斥准则: ①.空闲让进。 ②.忙则等待。 ③.有限等待。 ④.让权等待。 三、进程互斥的软件实现方法 1.单标志法 2.双标志先…...

基础的八股
JS this 全局:this指向window 函数:this指向window 对象:this指向调用它的 get、post的区别 1、写的地方不同:get在地址栏里 地址栏有多长就只能写多少、post在请求体里 没有上限 2、关于回退和刷新:get回退和刷新没问…...

使用Python从头开始创建PowerPoint演示文稿
目录 一、环境搭建与基础知识 1.1 环境搭建 1.2 基础知识 二、创建演示文稿对象 三、添加幻灯片 3.1 选择幻灯片布局 3.2 设置幻灯片内容 3.2.1 设置标题和副标题 3.2.2 添加文本内容 3.2.3 插入图片 3.2.4 插入图表 四、高级应用:批量生成演示文稿 4.…...

【C++ Primer Plus习题】15.4
大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream> #include "sales.h"…...

Pipeline Scheduling(UVA 690)
网址如下: Pipeline Scheduling - UVA 690 - Virtual Judge (vjudge.net) (第三方网站) 噫,好!我中了! 这题还是有点折磨的,刚开始我只会递归下一个程序运行的时间(范围在1~n&…...

萤石举办2024清洁机器人新品发布会 多维智能再造行业标杆
导言:作为智慧生活守护者,萤石今日发布了两款清洁机器人,AI扫拖机器人RS20 Pro Ultra 和AI洗地机器人RX30 Max ,标志着萤石在智能清洁领域的全新突破。RS20 Pro Ultra基于CutFree 2.0内切割滚刷专利,有效解决毛发缠绕难…...