java poi 读取excel 编码_Java使用POI 读取和写入Excel指南

本文档详细介绍了如何使用Apache POI 4.0.1版本来读取和写入Excel数据。通过示例程序展示了如何读取Excel文件、解析内容并封装数据,以及如何创建新的Excel文件并写入数据。内容包括准备工作、读取数据、写入数据的代码实现,以及相关应用场景的补充。
摘要由CSDN通过智能技术生成

做项目时经常有通过程序读取Excel数据,或是创建新的Excel并写入数据的需求;网上很多经验教程里使用的POI版本都比较老了,一些API在新版里已经废弃,这里基于最新的Apache POI 4.0.1版本来总结一下整个读取和写入Excel的过程,希望能帮助到需要的人 ^_^

1. 准备工作

1.1 在项目中引入Apache POI相关类库

引入 Apache POI 和 Apache POI-OOXML 这两个类库,Maven坐标如下:

org.apache.poi

poi

4.0.1

org.apache.poi

poi-ooxml

4.0.1

2. 读取或写入Excel数据

2.1 示例程序结构说明

简单说明一下示例程序的整体结构:

ExcelReader.java是实现读取Excel数据功能的类;

ExcelWriter.java是创建新的Excel并向其中写入数据的类;

ExcelDataVO.java封装了读取或写入时每一“行”的数据;

MainTest.java是示例程序的入口类,其中演示了读取和写入Excel数据的整个过程;

2.2 读取数据

示例程序需要从桌面读取 readExample.xlsx 内的数据,readExample.xlsx 的内容如下:

f9253c172e96c64570d1bb877954a362.png

读取Excel时主要调用ExcelReader.java类来读取和解析Excel的具体内容,这里以读取系统文件的形式演示读取过程:(兼容 xls 和 xlsx)

2.2.1 主程序入口类代码:

/**

* Author: Dreamer-1

* Date: 2019-03-01

* Time: 10:13

* Description: 示例程序入口类

*/

public class MainTest {

public static void main(String[] args) {

// 设定Excel文件所在路径

String excelFileName = "/Users/Dreamer-1/Desktop/myBlog/java解析Excel/readExample.xlsx";

// 读取Excel文件内容

List readResult = ExcelReader.readExcel(excelFileName);

// todo 进行业务操作

}

}

读取和写入时封装每一“行”数据的ExcelDataVO.java代码如下:

/**

* Author: Dreamer-1

* Date: 2019-03-01

* Time: 11:33

* Description: 读取Excel时,封装读取的每一行的数据

*/

public class ExcelDataVO {

/**

* 姓名

*/

private String name;

/**

* 年龄

*/

private Integer age;

/**

* 居住地

*/

private String location;

/**

* 职业

*/

private String job;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Integer getAge() {

return age;

}

public void setAge(Integer age) {

this.age = age;

}

public String getLocation() {

return location;

}

public void setLocation(String location) {

this.location = location;

}

public String getJob() {

return job;

}

public void setJob(String job) {

this.job = job;

}

}

2.2.2 Excel解析类的代码:

/**

* Author: Dreamer-1

* Date: 2019-03-01

* Time: 10:21

* Description: 读取Excel内容

*/

public class ExcelReader {

private static Logger logger = Logger.getLogger(ExcelReader.class.getName()); // 日志打印类

private static final String XLS = "xls";

private static final String XLSX = "xlsx";

/**

* 根据文件后缀名类型获取对应的工作簿对象

* @param inputStream 读取文件的输入流

* @param fileType 文件后缀名类型(xls或xlsx)

* @return 包含文件数据的工作簿对象

* @throws IOException

*/

public static Workbook getWorkbook(InputStream inputStream, String fileType) throws IOException {

Workbook workbook = null;

if (fileType.equalsIgnoreCase(XLS)) {

workbook = new HSSFWorkbook(inputStream);

} else if (fileType.equalsIgnoreCase(XLSX)) {

workbook = new XSSFWorkbook(inputStream);

}

return workbook;

}

/**

* 读取Excel文件内容

* @param fileName 要读取的Excel文件所在路径

* @return 读取结果列表,读取失败时返回null

*/

public static List readExcel(String fileName) {

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值