一、导入依赖
1 2 3 4 5
| <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.1.1</version> </dependency>
|
二、编写实体类
用于接收Excel表中的信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| @Data public class ExcelSubjectData {
@ExcelProperty(index = 0) @ExcelProperty("一级分类") private String oneSubjectName;
@ExcelProperty(index = 1) @ExcelProperty("一级分类") private String twoSubjectName; }
|
三、实现读写操作
读取
编写一个类继承AnalysisEventListener,其中T是上一步创建的用于封装excel数据行的类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
@Data @Component public class SubjectExcelListener extends AnalysisEventListener<ExcelSubjectData> {
@Override public void invoke(ExcelSubjectData data, AnalysisContext analysisContext) { if (data == null){ return ; } }
@Override public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
@Override public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
}
}
|
业务层
1 2 3 4 5 6 7 8 9 10 11 12 13
|
public void importSubjectData(MultipartFile file) { InputStream is = null; try { is = file.getInputStream(); EasyExcel.read(is, ExcelSubjectData.class,new SubjectExcelListener()).sheet().doRead(); } catch (IOException e) { e.printStackTrace(); } }
|
写入
写法一:
1 2 3 4 5 6 7 8
| public void writeExcel(List<T> list) { String fileName = "F:\\11.xlsx"; EasyExcel.write(fileName, T.class).sheet("写入方法一").doWrite(list); }
|
写法二:
1 2 3 4 5 6 7 8 9 10
| public void writeExcel(List<T> list) { String fileName = "F:\\12.xlsx"; ExcelWriter excelWriter = EasyExcel.write(fileName, T.class).build(); WriteSheet writeSheet = EasyExcel.writerSheet("写入方法二").build(); excelWriter.write(list, writeSheet); excelWriter.finish(); }
|
最后附上官网:EasyExcel