JAVA数据导出为Excel

news2024/9/21 0:46:07

目录

一、导入依赖

二、使用的相关类

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.coloradmin.cn/o/2108525.html

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

相关文章

Redis 常用命令总结

文章目录 目录 文章目录 1 . 前置内容 1.1 基本全局命令 KEYS EXISTS ​编辑 DEL EXPIRE TTL TYPE 1.2 数据结构和内部编码 2. String类型 SET GET MGET MSET SETNX INCR INCRBY DECR DECYBY INCRBYFLOAT 命令小结 内部编码 3 . Hash 哈希类型 HSET …

如何用python远程测试连接redis服务器

前提条件 A&#xff1a;操作机&#xff08;操作系统不限&#xff09; B&#xff1a;装有redis的服务器&#xff08;linux系统&#xff09; 而且需要配置redis服务器允许外部连接。这个一般是在redis的配置文件里修改相关选项。redis.conf或者6379.conf就是redis的配置文件 b…

备考MS office 二级

word 1、分页符 布局-分隔符-分节符-下一页&#xff1a;第二张可以不同纸张大小、方向等 2、调整宽度&#xff1a;新文字宽度&#xff08;字符宽度&#xff09; 中文版式 3、字符间距 4、文本转换为表格 1、把 || 替换为逗号&#xff0c;方便查找 5、首字下沉 插入 - 首字下沉…

ActiveMQ 反序列化漏洞复现(CVE-2015-5254)

一、漏洞前言 Apache ActiveMQ是美国阿帕奇&#xff08;Apache&#xff09;软件基金会所研发的一套开源的消息中间件&#xff0c;它支持Java消息服务&#xff0c;集群&#xff0c;Spring Framework等。Apache ActiveMQ 5.13.0之前5.x版本中存在安全漏洞&#xff0c;该漏洞源于程…

一篇python常见的Pandas的数据功能的使用

当我们学习了如何使用 Pandas 进行数据的导入与导出,这为我们后续的数据处理打下了基础.此次我们将重点讨论数据选择与过滤.通过掌握这一部分的知识,你将能够轻松地从复杂的数据集中提取出所需的信息.接下来,我们将通过一些实例来逐步了解这些操作. 数据选择 数据选择主要是针…

二分查找 ,看这一篇就够了

什么是二分查找&#xff1f; 二分查找&#xff08;Binary Search&#xff09;是一种高效的查找算法&#xff0c;适用于在有序数组中查找特定元素。其基本思想是通过逐步缩小查找范围&#xff0c;每次将查找区间减半&#xff0c;从而大大提高查找效率。二分查找的时间复杂度为O(…

B样条曲线测试

实验效果&#xff1a; 绿色为A*规划的路径&#xff0c;蓝色为Bspline曲线 介绍 对A* 生成的路径进行B样条&#xff08;A* 和Bspline都是佬们写好的&#xff0c;我直接拿来用&#xff09; 样条曲线相关可参考文章&#xff1a;详解样条曲线&#xff08;上&#xff09;&#x…

基于LaMA-Factory微调llama3.1-8B

大模型的训练目前主要分为Pre-training和Post-training&#xff0c;受限于资源算力等原因&#xff0c;实际工作中更多用到的是SFT。 对于普通用户来说SFT仍然具备较高的门槛&#xff0c;需要了解一定的理论基础&#xff0c;准备用于微调的数据&#xff0c;由于不同基座模型相应…

xilinx通用RAM或者FIFO设计

1、在 Vivado 中&#xff0c;XPM&#xff08;Xilinx Parameterized Macros&#xff09;是 Xilinx 提供的一组预定义的、参数化的硬件描述语言 (HDL) 宏模块&#xff0c;用于简化设计流程和提高设计效率。XPM 模块通常用于实现常见的功能&#xff0c;比如存储器&#xff08;RAM/…

PWR电源控制(低功耗模式)

1 PWR简介 1 程序后面是空循环&#xff0c;即使不用也会耗电&#xff0c;所以有了低功耗&#xff08;例如遥控器&#xff09; 2 也要保留唤醒模式&#xff0c;如串口接收数据中断唤醒&#xff0c;外部中断唤醒&#xff0c;RTC闹钟唤醒&#xff0c;在需要工作是&#xff0c;ST…

docker装大米cms(damicms)各种cms可用相同办法

1.docker pull 拉取镜像文件 docker pull medicean/vulapps:base_lamp 2.使用docker运行 docker run -d -p 8080:80 medicean/vulapps:base_lamp 3将需要搭建的 CMS 项目源码放到 kali 中&#xff0c;这里以 damiCMS 为例 查看容器id docker ps 4进入dmCMS 所在目录&#…

基于Java+SpringBoot+Vue的新闻稿件管理系统

基于JavaSpringBootVue的新闻稿件管理系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末附源码下载链接&#x1f345; 哈…

利用高德API获取整个城市的公交路线并可视化(四)

副标题&#xff1a;公共汽电车站点覆盖率——以厦门市公交线路为例 书接上回&#xff0c;我们有了公交的线路、站点数据&#xff0c;并同时对数据质量进行了校验&#xff0c;但是不同城市情况不同&#xff0c;需要看当地对公交交通数据的开放程度&#xff0c;部分城市建设的有…

Linux系统运行模式以及链接文件

一.Linux系统运行模式 如上图所示&#xff0c;可以使用runlevel这条命令去查看当前系统的运行模式。 如上图所示&#xff0c;可以使用这条命令使得机器以字符模式启动。 如上图所示&#xff0c;可以使用这条命令使得机器以图像化界面启动。 二.链接文件 链接文件类型&#xff…

Aigtek电压放大器的技术指标是什么

电压放大器是一种电路&#xff0c;用于将低电压信号放大为高电压信号。它在电子、通信、音频和视频等领域广泛应用。下面是电压放大器电路的一些特点。 放大倍数高&#xff1a;电压放大器的主要功能是将输入信号的幅度放大到所需的输出电压。因此&#xff0c;电压放大器的一个重…

(Postman)接口测试基础应用

目录 ​编辑 1.简介与分类 2.接口测试流程及用例设计 3. 实战接口介绍 4.postman的简介&#xff0c;安装&#xff0c;注册 5.get请求和响应页签详解 6. 问题​编辑 1.环境变量和全局变量&#xff1a;globals--全局变量 2.接口关联 1.简介与分类 1.接口测试是测试系统组…

重头开始嵌入式第三十四天(数据库二)

sqlite3的一些补充 目录 sqlite3的一些补充 1.事物 2.连接&#xff0c;联合 3.触发器 4.子查询 1.事物 数据库事务是数据库管理系统执行过程中的一个逻辑单位&#xff0c;它由一系列对数据库的操作组成。 一、事务的特性 1. 原子性&#xff08;Atomicity&#xff09…

移动端设计规范:提升用户体验的核心要素

随着移动互联网的普及&#xff0c;移动端设计已成为用户体验的关键一环。设计师不仅需要考虑视觉美感&#xff0c;还必须确保设计符合用户操作习惯&#xff0c;提高用户的操作效率。本文将探讨移动端设计的核心规范&#xff0c;帮助设计师打造出既美观又实用的应用界面。 一、…

uniapp动态页面API

目录 uni.setNavigationBarTitle动态设置标题 uni.showNavigationBarLoading为标题添加加载动画与uni.hideNavigationBarLoading停止加载动画 ​编辑 uni.setNavigationBarColor用于设置导航栏的颜色&#xff0c;包括背景颜色和文字颜色。这对于自定义应用的主题和风格非常有…

高质量的小间距LED显示屏有什么表现

随着企业对宣传和品牌形象提升的需求日益增长&#xff0c;LED显示屏凭借其立体化宣传和低成本优势&#xff0c;逐渐成为企业宣传的重要工具。近年来&#xff0c;小间距LED显示屏在市场上逐渐普及&#xff0c;生产厂家和产品种类也不断增加。面对如此众多的选择&#xff0c;许多…