前传

2018-11-24  本文已影响0人  afterturn

1.1 前言

easypoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员
就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板
语言(熟悉的表达式语法),完成以前复杂的写法

官网:http://www.afterturn.cn/
邮箱: qrb.jueyue@gmail.com
QQ群:  364192721

不如poi那么自定义,不如jxl那么多标签,但是我们就是写的少,写的少

EasyPoi的主要特点

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

功能

Excel自适应xls和xlsx两种格式,word只支持docx模式

1.Excel导入

2.Excel导出

3.Excel转html

4.word导出

5.pdf导出
1.2 Easypoi介绍

===

Easypoi 为谁而开发

都可以使用easypoi

Easypoi的目标是什么

Easypoi的目标不是替代poi,而是让一个不懂导入导出的快速使用poi完成Excel和word的各种操作,而不是看很多api才可以完成这样工作

为什么会写Easypoi

以前的以前(岁月真TMD的快)我虽然写了不少代码但还是很少写poi,然后跳到一家公司之后就和业务人员聊上了,来这个需要个报表,这个报表样式是这样的,这个表头是这样的,就这样我写了大量的poi代码,每次都是大量的篇幅,copy to copy,无聊的一逼,然后加入了jeecg,jeecg中有一个小的工具类,虽然我也不知道是谁写的,然是可以用注解搞定最简单的导出,突然豁然开朗,我可以完善,让我从报表的苦海当中脱离出来,这样我花了一周的时间做了第一个版本支持导入导出放到了jeecg,发现还是不错的,慢慢的用的人越来越多,我就把这块独立出来了,再然后有人提出了模板,然后就加入了模板功能,提出了word的需求,加入了word的功能,后来工作忙了虽然没再参与jeecg,但还是一直维持这easypoi的更新,根据见识的增长也不断的重构这代码,直到现在

独特的功能

小白如何开始

如果不使用spring mvc的便捷福利,直接引入easypoi-base 就可以了,easypoi-annotation

如果使用maven,请使用如下坐标

 <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-base</artifactId>
            <version>3.2.0</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-web</artifactId>
            <version>3.2.0</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-annotation</artifactId>
            <version>3.2.0</version>
        </dependency>

如果没有maven请直接下jar,在alimaven
1.4 测试项目
===

测试这个事情真不是个容易的事情
测试项目包括两块 Junit 的常见测试和spring 的view测试

1.spring view测试
运行application就可以了,访问界面,然后看到界面

view
对应的代码在view下面

2.Junit的测试目录结构如下

目前的测试覆盖率


输入图片说明

1.5 可能存在的小坑

缓存问题
缓存问题好像是很多童鞋都遇到的问题,可能是我设计的逻辑问题,但是一直没有好的解决,
但是我也给了一个无奈的解决方案,大家可以自己实现接口IFileLoader

public interface IFileLoader {
    /**
     * 可以自定义KEY的作用
     * @param key
     * @return
     */
    public byte[] getFile(String key);

}

来自己获取自己的文件,用来解决文件获取不到的问题
设置提供了两种方案,都是POICacheManager 的静态方法

    public static void setFileLoder(IFileLoader fileLoder) {
        POICacheManager.fileLoder = fileLoder;
    }

    /**
     * 一次线程有效
     * @param fileLoder
     */
    public static void setFileLoderOnce(IFileLoader fileLoder) {
        if (fileLoder != null) {
            LOCAL_FILELOADER.set(fileLoder);
        }
    }

第一个是全局替换,可以在项目启动的时候,设置下就可以了,第一个是当前线程有效,希望可以帮助大家解决问题,我再研究下更通用的文件获取,或者那位朋友提供下自己的通用方案。

上一篇 下一篇

猜你喜欢

热点阅读