官网地址:读Excel · 语雀
导入依赖坐标
<!-- EasyExcel 依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.11</version>
</dependency>
注解api 讲解:
@ExcelProperty 指定当前字段对应excel中的那一列。可以根据名字或者Index去匹配。当然也可以不写,默认第一个字段就是index=0,以此类推。千万注意,要么全部不写,要么全部用index,要么全部用名字去匹配。千万别三个混着用,除非你非常了解源代码中三个混着用怎么去排序的。
@ExcelIgnore 默认所有字段都会和excel去匹配,加了这个注解会忽略该字段
@DateTimeFormat 日期转换,用String去接收excel日期格式的数据会调用这个注解。里面的value参照java.text.SimpleDateFormat
@NumberFormat 数字转换,用String去接收excel数字格式的数据会调用这个注解。里面的value参照java.text.DecimalFormat
@ExcelIgnoreUnannotated 默认不加ExcelProperty 的注解的都会参与读写,加了不会参与
代码实现简单的excel表格的读写操作:
@Configuration
public class AliinListion extends AnalysisEventListener<User> {
public List<User> list = new ArrayList<>();
// 读数据每次都会进行调用invoke 的方法 (可以在invoke方法里面进行逻辑的处理)
@Override
public void invoke(User user, AnalysisContext analysisContext) {
System.out.println(user);
}
// 读取完工作薄最后调用的方法
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
}
实体类:
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class User {
@ExcelIgnore
@ExcelProperty(value = "ID")
private Long id;
@ExcelProperty(value = "性别")
private String sex;
@ExcelProperty(value = "出生日期")
@DateTimeFormat("YYYY-MM-dd DD:mm:ss")
private Date birthday;
@ExcelProperty(value = "学生姓名")
private String name; }
public class EasyExcelTest {
@Autowired
private AliinListion aliinListion;
// 完成execle 表格的读写需要先进行监听是实现
/**
* excel 表格的读操作
*/
@Test
public void test01() {
// 创建工作薄
ExcelReaderBuilder readWrodBook = EasyExcel.read("F:\\easyexcle\\src\\main\\resources\\qwe.xlsx", User.class, aliinListion);
// 创建工作表
ExcelReaderSheetBuilder sheet = readWrodBook.sheet();
// 读取数据;
sheet.doRead();
}
/**
* 往excel 表格 编写数据
*/
@Test
public void test02() {
// 创建工作薄
ExcelWriterBuilder write = EasyExcel.write("F:\\easyexcle\\src\\main\\resources\\qwe_____.xlsx", User.class);
// 创建工作表
ExcelWriterSheetBuilder sheet = write.sheet();
// 往里面进行编写数据;
sheet.doWrite(init());
}
public List<User> init() {
ArrayList<User> userArrayList = new ArrayList<>();
for (int i = 0; i < 10; i++) {
User user = new User();
user.setBirthday(new Date());
user.setName("张三" + i);
user.setSex("男");
userArrayList.add(user);
}
return userArrayList;
}
}