官网地址:https://alibaba-easyexcel.github.io/quickstart
看官网感觉稍微有点复杂,自己做个小demo,以后要用的话拿来就可以上手了,当然有些小细节还是得参照官网来。
总体步骤:
1.导入jar包
2.写实体类
3.写测试类,读excel文件和写excel文件
<dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.11</version> </dependency>
import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; import java.util.Date; /** * @author :Li Bin * @date : 2021/9/21 11:53 * @description: 完成实体类和excel列数据的映射。 */ @Data public class ExcelData { @ExcelProperty("ID") private String id; @ExcelProperty("用户名") private String name; @ExcelProperty("邮箱") private String email; @ExcelProperty("性别") private String gender; @ExcelProperty("积分") private Integer score; @ExcelProperty("IP") private String ip; @ExcelProperty("登陆次数") private Integer count; @ExcelProperty("加入时间") private Date date; }
主要的读和写excel的类:
import com.aiguigu.demo.pojo.ExcelData; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.alibaba.excel.support.ExcelTypeEnum; import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; import java.util.ArrayList; import java.util.List; /** * @author :Li Bin * @date : 2021/9/21 11:57 * @description: */ public class ExcelTest { public static void main(String[] args) { List<ExcelData> list = paraseDada(); //list 写入excel EasyExcel.write("/Users/bitidawang/Downloads/easyExcel_副本.xlsx") .head(ExcelData.class) //让表头和列数据一样宽,可以加下面这一行。官网说不会非常一致,我试了一下还好,就是把我的表头ID也给换行了。 .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) .excelType(ExcelTypeEnum.XLSX) .sheet("用户数据表") .doWrite(list); } public static List<ExcelData> paraseDada(){ List<ExcelData> list=new ArrayList<ExcelData>(); EasyExcel.read("/Users/bitidawang/Downloads/easyExcel.xlsx") .head(ExcelData.class) .sheet() .registerReadListener(new AnalysisEventListener<ExcelData>() { /** * 每解析一条数据都会调用该方法 * @param excelData * @param analysisContext */ @Override public void invoke(ExcelData excelData, AnalysisContext analysisContext) { list.add(excelData); } /** * 解析完毕的回调方法 * @param analysisContext */ @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { } }).doRead(); //打印查看输出结果 for (ExcelData excelData : list) { System.out.println(excelData); } return list; } }
excel表格的样子: