当前位置 主页 > 服务器问题 > Linux/apache问题 >

    使用EasyPoi轻松导入导出Excel文档的方法示例

    栏目:Linux/apache问题 时间:2019-12-17 21:53

    提到Excel的导入导出,大家肯定都知道alibaba开源的EasyExcel,该项目的github地址为:https://github.com/alibaba/easyexcel。

    这个项目非常活跃,项目诞生的目的就是为了简化开发、降低内存消耗。我项目中也用过,但还是有一些槽点的,比如文档很简陋,功能做的不完善,不支持图片的读取等。所以,今天给大家推荐另外一款Excel处理的工具:EasyPoi。

    一、EasyPoi简介

    官网:http://www.afterturn.cn/

    文档:http://easypoi.mydoc.io/

    EasyPoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板 语言(熟悉的表达式语法),完成以前复杂的写法 ,不如poi那么自定义,不如jxl那么多标签,但是我们就是写的少,写的少。

    EasyPoi的主要特点

    设计精巧,使用简单 接口丰富,扩展简单 默认值多,write less do more spring mvc支持,web导出可以简单明了

    二、EasyPoi的功能介绍

    Excel自适应xls和xlsx两种格式,word只支持docx模式,功能还是挺丰富的。

    1.Excel导入

    注解导入 Map导入 大数据量导入sax模式 导入文件保存 文件校验 字段校验

    2.Excel导出

    注解导出 模板导出 html导出

    3.Excel转html

    4.word导出

    5.pdf导出

    三、重点功能介绍

    1.注解

    EasyPoi起因就是Excel的导入导出,最初的模板是实体和Excel的对应,model--row,filed--col 这样利用注解我们可以和容易做到excel到导入导出 经过一段时间发展,现在注解有5个类分别是

    @Excel 作用到filed上面,是对Excel一列的一个描述 @ExcelCollection 表示一个集合,主要针对一对多的导出,比如一个老师对应多个科目,科目就可以用集合表示 @ExcelEntity 表示一个继续深入导出的实体,但他没有太多的实际意义,只是告诉系统这个对象里面同样有导出的字段 @ExcelIgnore 和名字一样表示这个字段被忽略跳过这个导导出 @ExcelTarget 这个是作用于最外层的对象,描述这个对象的id,以便支持一个对象可以针对不同导出做出不同处理

    2.Excel 模板

    模板是处理复杂Excel的简单方法,复杂的Excel样式,可以用Excel直接编辑,完美的避开了代码编写样式的雷区,同时指令的支持,也提了模板的有效性。就像下面这样使用,具体用法请看文档。

    3.Excel<->Html的互转

    4.Word模板导出

    5.图片的导入导出

    @Test//图片导入
    public void test() {
            try {
                ImportParams params = new ImportParams();
                params.setNeedSave(true);
                List<CompanyHasImgModel> result = ExcelImportUtil.importExcel(
                        new File(PoiPublicUtil.getWebRootPath("import/imgexcel.xls")),
                        CompanyHasImgModel.class, params);
                for (int i = 0; i < result.size(); i++) {
                    System.out.println(ReflectionToStringBuilder.toString(result.get(i)));
               }
                Assert.assertTrue(result.size() == 4);
           } catch (Exception e) {
                e.printStackTrace();
           }
       }
    }
     //导出
     @Excel(name = "公司LOGO", type = 2 ,width = 40 , height = 20,imageType = 1)
        private String companyLogo;