读取写入Excel

Meteor 2023-06-21 10:25:48
Categories: Tags:

参考文档

easyExcel

写入Excel

引入依赖

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.1</version>
</dependency>
</dependencies>

建立映射实体

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Entity {
@ExcelProperty("name")
private String name;
@ExcelProperty("id")
private Integer id;
@ExcelProperty("date")
private Date date;
}

准备数据

private static List<Entity> prepareData(){
List<Entity> list = new ArrayList<>();
for(int i = 0; i < 10; i++){
list.add(new Entity("name"+i,i,new Date()));
}
return list;
}

写入excel

public static void write(List<Entity> res, StringoutputAddress) {
//指定写用哪个class去写
ExcelWriter excelWriter = null;
try {
EasyExcel.write(outputAddress, Entity.class)sheet("测试").doWrite(res);
} finally {
// finish关闭流
if (excelWriter != null) {
excelWriter.finish();
}
}
}

效果如下:

读取Excel

public static void read(String inputAddress) throwsFileNotFoundException {
FileInputStream inputStream = new FileInputStrea(inputAddress);
//同步的读,可能会占用大量内存
List<Entity> test = EasyExcel.read(inputStream).head(Entity.class).sheet("测试").doReadSync();
test.stream().forEach(System.out::println);
}

结果:

完整代码

package com.meteor.concurrent.excel;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.regex.Pattern;

public class TestExcel {
private static List<Entity> prepareData(){
List<Entity> list = new ArrayList<>();
for(int i = 0; i < 10; i++){
list.add(new Entity("name"+i,i+"",new Date()));
}
return list;
}
public static void write(List<Entity> res, String outputAddress) {
//指定用哪个class去写
ExcelWriter excelWriter = null;
try {
EasyExcel.write(outputAddress, Entity.class).sheet("测试").doWrite(res);
} finally {
// finish关闭流
if (excelWriter != null) {
excelWriter.finish();
}
}
}
public static void read(String inputAddress) throws FileNotFoundException {
FileInputStream inputStream = new FileInputStream(inputAddress);
//同步的读,可能会占用大量内存
List<Entity> test = EasyExcel.read(inputStream).head(Entity.class).sheet("测试").doReadSync();
test.stream().forEach(System.out::println);
}
public static void main(String[] args) throws FileNotFoundException {
List<Entity> data = prepareData();
write(data,"D:\\test\\test.xlsx");
read("D:\\test\\test.xlsx");
}
}