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、结果

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

单点登录OAuth2.0

OAuth 2.0&#xff08;Open Authorization 2.0&#xff09;是OAuth协议的第二个版本&#xff0c;于2012年正式成为RFC 6749标准。在OAuth 2.0之前&#xff0c;OAuth 1.0版本已经为Web应用提供了一定程度的授权功能&#xff0c;但随着时间的推移&#xff0c;这些版本逐渐显露出一…

Nginx: TCP建立连接的优化和启用Fast Open功能

TCP 建立连接优化 在三次握手中&#xff0c;相关TCP的内核参数可优化这一过程 net.ipv4.tcp_syn_retries 6net.ipv4.tcp_synack_retries 5net.ipv4.tcp_syncookies 0net.ipv4.tcp_max_syn_backlognet.core.somaxconnnet.core.netdev_max_backlog 1 &#xff09; net.ipv4…

C语言之猜数字小游戏

哈喽&#xff0c;大家好&#xff01;我是冰淇淋加点糖。今天我们来用前面所学的知识来开发一个猜数字的小游戏&#xff0c;锻炼我们的编程能力和编程思维。 猜数字小游戏功能简介 1.随机生成一个1-100的数字。 2.玩家用户开始猜数字。 > 猜大了&#xff0c;提醒猜大了…

【知识库系列】MPR/多模态方向观察:图像视频与3D生成

多模态背后的backbone会长成什么样&#xff1f; 各种模态到梯度下降到最后会不会都差不多&#xff1f; Sora 是不是已经被追上了? 我们真的把视频数据都用好了吗&#xff1f; 知识库完整文档&#xff1a; MPR/多模态方向观察&#xff1a;图像视频与3D生成&#xff1a;https…

SpringBoot实现前后端传输加密设计

在Web应用中&#xff0c;确保前后端之间的数据传输安全是非常重要的。这通常涉及到使用HTTPS协议、数据加密、令牌验证等安全措施。本文通过将前后端之间的传输数据进行加密&#xff0c;用于在Spring Boot应用中实现前后端传输加密设计。 一、数据加密方案 即使使用了HTTPS&…

java利用JXL操作excel

通过JXL操作Excel JXL是韩国人所著,目前停止更新,只支持xls格式,即2007之前的版本 import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java…

c# checkbox的text文字放到右边

checkbox的text文字放到右边 实现方法如下图 特此记录 anlog 2024年9月2日

Tensorflow实现深度学习8:猫狗识别

本文为为&#x1f517;365天深度学习训练营内部文章 原作者&#xff1a;K同学啊 一 导入数据 import matplotlib.pyplot as plt import tensorflow as tf # 支持中文 plt.rcParams[font.sans-serif] [SimHei] # 用来正常显示中文标签 plt.rcParams[axes.unicode_minus] Fals…

带AI功能朵米客服系统3.5无限制开心版+搭建文档

带AI功能朵米客服系统3.5无限制开心版搭建文档&#xff0c;朵米客服系统是一款全功能的客户服务解决方案&#xff0c;提供多渠道支持&#xff08;如在线聊天、邮件、电话等&#xff09;&#xff0c;帮助企业建立与客户的实时互动。该系统具有智能分流功能&#xff0c;可以快速将…

万象奥科参展“2024 STM32全国巡回研讨会”—深圳站、广州站

9月3日-9月5日&#xff0c;万象奥科参展“2024 STM32全国巡回研讨会”— 深圳站、广州站。此次STM32研讨会将会走进全国11个城市&#xff0c;展示STM32在智能工业、无线连接、边缘人工智能、安全、图形用户界面等领域的产品解决方案及多样化应用实例&#xff0c;深入解读最新的…

【RabbitMQ之一:windows环境下安装RabbitMQ】

目录 一、下载并安装Erlang1、下载Erlang2、安装Erlang3、配置环境变量4、验证erlang是否安装成功 二、下载并安装RabbitMQ1、下载RabbitMQ2、安装RabbitMQ3、配置环境变量4、验证RabbitMQ是否安装成功5、启动RabbitMQ服务&#xff08;安装后服务默认自启动&#xff09; 三、安…

VR虚拟展厅的应用场景有哪些?

虚拟展厅作为一种利用虚拟现实技术构建的三维展示空间&#xff0c;其应用场景广泛且多样。视创云展为企业虚拟展厅搭建提供技术支持。以下是一些主要的应用场景&#xff1a; 1. 博物馆和艺术展览 文物保护与展示&#xff1a; 在博物馆中&#xff0c;为了保护珍贵的文物和艺术…

【node.js】基础之修改文件

node.js 基础(一) node.js是什么&#xff1f; 上面这句话的意思就是&#xff1a;Node.js 是一个开源的&#xff0c;跨平台的javascript运行环境。通俗的说就是一个应用程序或者说是一个软件&#xff0c;可以运行javascript。 Node.js的作用&#xff1a; 开发服务器应用。 将数…

nvidia-cuda-tensorrt-cudnn下载网站

tensorrt:https://developer.nvidia.com/tensorrt/download cudnn:https://developer.nvidia.com/rdp/cudnn-archive cuda:https://developer.nvidia.com/cuda-toolkit-archive

Mybatis---代理设计模式(超详细)

Mybatis—代理设计模式 文章目录 Mybatis---代理设计模式一、什么是代理设计模式二、静态代理1、定义2、结构3、示例 三、动态代理1、定义2、newProxyInstance &#xff08;&#xff09;方法3、示例 四、CGLIB代理1、引入2、定义3、工作原理4、示例 一、什么是代理设计模式 首…

AI基础 L1 Introduction to Artificial Intelligence

什么是AI Chinese Room Thought Experiment 关于“强人工智能”的观点&#xff0c;即认为只要一个系统在行为上表现得像有意识&#xff0c;那么它就真的具有理解能力。 实验内容如下&#xff1a; 假设有一个不懂中文的英语说话者被关在一个房间里。房间里有一本用英文写的中…

鸿蒙开发基础知识-页面布局【第四篇】

1.类型转换 2.交互点击事件 3.状态管理 4.forEch渲染和右上角图标 测试案例 Stack 层叠布局一个生肖卡 5. 动画展示图片 6. Swiper 轮播组件的基本使用 图片等比显示 aspectRatio&#xff08;&#xff09;

TikTok直播为什么要用独立IP

TikTok直播作为一种受欢迎的社交媒体形式&#xff0c;吸引了越来越多的用户和内容创作者。在进行TikTok直播时&#xff0c;选择使用独立IP地址是一种被广泛推荐的做法。本文将探讨为什么在TikTok直播中更推荐使用独立IP&#xff0c;并解释其优势和应用。 独立IP是指一个唯一的互…

sheng的学习笔记-AI-半监督聚类

AI目录&#xff1a;sheng的学习笔记-AI目录-CSDN博客 半监督学习&#xff1a;sheng的学习笔记-AI-半监督学习-CSDN博客 聚类&#xff1a;sheng的学习笔记-AI-聚类(Clustering)-CSDN博客 均值算法&#xff1a;sheng的学习笔记-AI-K均值算法_k均值算法怎么算迭代两次后的最大…

Linux-(系统启动、用户管理)

目录 前言 关机&重启命令 基本介绍 注意细节 用户登录和注销 注意&#xff1a; 用户管理 基本介绍 添加用户 指定/修改密码 删除用户 查询用户信息 切换用户 查看当前用户登录用户 用户组 新增组 删除组 查看所有组 修改用户所属组 创建用户时指定用户…