1、引入依赖
<dependencies> <!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel --> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.1.1</version> </dependency> <!--EasyExcel需要用到poi的依赖,2.1.1对应3.17,否则容易出错--> <!--xls--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency> <!--xlsx--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version> </dependency> </dependencies>2、创建实体类
@Data//此处为lombok的注解,可自动生成getset方法,没有lombok插件的可以看以下以往的文章,或者手动getset public class demoData { //Excel表头 为excel表中的第一行数据 @ExcelProperty("学生编号") private Integer sno; @ExcelProperty("学生姓名") private String sname; }3、具体代码实现
public class Testeasyexcel { public static void main(String[] args) { //easyexcel写操作 //设置写入文件夹地址和文件名称 String filename= "D:\\write.xlsx"; List<demoData> list = new ArrayList<>(); for(int i=0;i<100;i++){ demoData d = new demoData(); d.setSname("Mike"+i); d.setSno(i); list.add(d); } //调用方法 参数1:文件输出 2:实体类 EasyExcel.write(filename,demoData.class).sheet("学生列表").doWrite(list); //sheet为excel的左下角的多个页面,此处为学生列表的页面 } }1、建实体类
@Data public class demoData { //Excel表头 @ExcelProperty(value = "学生编号",index = 0)//次数要多加个索引号,表示表头的第几列 private Integer sno; @ExcelProperty(value = "学生姓名",index = 1) private String sname; }2、写监听器
//监听器 要继承AnalysisEventListener<demoData> demoData此处为实体类 public class excelListener extends AnalysisEventListener<demoData> { //一行一行读出excel内容 不读表头 EasyExcel之所以效率高,也是因它一行一行读取,解析。 @Override public void invoke(demoData demoData, AnalysisContext analysisContext) { System.out.println("***"+demoData); } //读取表头 @Override public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) { System.out.println("表头"+headMap); } //读取完执行的方法 @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { } }3、具体代码实现
public class ReadTestEasyExcel { public static void main(String[] args) { String filename= "D:\\write.xlsx"; EasyExcel.read(filename,demoData.class,new excelListener()).sheet().doRead(); } }控制台效果 希望该文章对你们有帮助哈,有帮到你们的麻烦点个赞哈,有兴趣的朋友可以关注一下公众号,公众号上会发布一些最近行业常用的技术,还有一些自己见解的文章。
