最近有同事问到在Java程序中poi读取excel怎么做,虽然以前写过,但是最近没用到就差不多忘了,俗话说好记性不如烂笔头,趁现在有空,特此记录一下。
项目使用的是springBoot,首先添加依赖,使用的是apache的poi:
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
这里添加了两个依赖,查了下资料,对于excel来说poi是处理excel2003版本的,而poi-ooxml是处理excel2007+版本的,为了适配不同版本的excel,添加了两个jar包。
首先需要获取到excel文件流,这里一般是两种情况:
一:通过获取传入的文件路径去读取已存在的文件,service层代码:
public List<Object> dealFromUri(String fileUri) {
if ("".equals(fileUri)) {
// 文件路径为空抛出异常
throw new RuntimeException("文件路径为空!");
}
List<Object> list = dealExcel(fileUri);
list.forEach(System.out::println);
return list;
}
dealExcel方法代码,这个方法就是处理excel文件的,其中还包含了一个readExcel方法,一个处理不同单元格格式的getCellFormatValue方法:
public List<Object> dealExcel(String fileUri) {
List<Object> list = new ArrayList<>();
Workbook workbook = readExcel(fileUri);
if (wor