栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java集成easyExcel

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java集成easyExcel

        导入导出Excel数据在实际开发中很常见,之前一直使用POI,直到这次数据量庞大,POI占用内存的问题展露无遗,就尝试了easyExcel。EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。 提供的方法也足够正常使用,话不多说,直接上代码。

导入依赖


    com.alibaba
    easyexcel
    3.1.0
配置监听器
@Getter
@Setter
public class ExcelListener extends AnalysisEventListener {

    private List data = new ArrayList<>();

    @Override
    public void invoke(T object, AnalysisContext context) {
        data.add(object);
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
    }
}
封装读写Excel文件方法
public class ExcelHelper {

    public static  List readExcel(String file, Class head, String... sheetNames) {
        List list = new ArrayList<>();
        for (String sheetName : sheetNames) {
            list.addAll(readExcel(file, head, sheetName));
        }
        return list;
    }

    public static  List readExcel(String file, Class head, String sheetName) {
        ExcelListener listener = new ExcelListener<>();
        EasyExcel.read(file, head, listener).readCache(new MapCache()).sheet(sheetName).doRead();
        return listener.getData();
    }

    public static  List readExcel(String file, Class head, int sheet) {
        ExcelListener listener = new ExcelListener<>();
        EasyExcel.read(file, head, listener).readCache(new MapCache()).sheet(sheet).doRead();
        return listener.getData();
    }
    public static  List readExcel(String file, Class head, int sheet, int headRowNumber) {
        ExcelListener listener = new ExcelListener<>();
        EasyExcel.read(file, head, listener).readCache(new MapCache()).sheet(sheet).headRowNumber(headRowNumber).doRead();
        return listener.getData();
    }


    public static  void writeExcel(String file, List> head, String sheetName, List list) {
        EasyExcel.write(file).sheet(sheetName).head(head).doWrite(list);
    }

    @SuppressWarnings("rawtypes")
    public static  void writeExcel(String file, Class head, String sheetName, List list) {
        EasyExcel.write(file).sheet(sheetName).head(head).doWrite(list);
    }

}

        上文中使用的变量名翻译一下基本就是它的意义,head为Excel对应的实体类,headRowNumber为从第几行开始读取信息。有时候Excel会有多级表头,而我们想要的中间的数据,就可以使用headRowNumber设置读取开始行。

实体类注解

        easyExcel为我们提供了@ExcelProperty、@ExcelIgnore注解

 

        使用方法如上图所示,@ExcelProperty对应我们Excel表格中列的名称,@ExcelIgnore表示在或写中忽略某一列,可以用来存放我们的主键信息,这两个注解就可以应对大多数情况。官方还提供了一些可以进行类型转换的注解。

    
    @ExcelProperty(converter = Converter.class)
    private String string;
    
    @DateTimeFormat("yyyy年MM月dd日 HH时mm分ss秒")
    private String date;
    
    @NumberFormat("#.##%")
    private String doubleData;

         以上代码,复制后无需另外配置直接可以使用,需要者自取

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/999811.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号