EasyPoi教程 联系客服

发布时间 : 星期三 文章EasyPoi教程更新完毕开始阅读2e6f50fea300a6c30c229fec

Map的导出

有时候我们希望导出一个map集合或者我们导出的列表是不固定的,就需要这个导出了

和上面方法的区别就是上面的Classes变成了EntityList其实Classes最好也会翻译成EntityList,只是自动帮你翻译了,这个方法就是把控制器还给你了,但是这个就比较麻烦,提供4个构造器name就是列的名称,key对应就是map中的key或者属性的name,便于map的快速导出 这个也是基本上支持注解中的所有功能 ExcelExportEntity() ExcelExportEntity(java.lang.String name) ExcelExportEntity(java.lang.String name, java.lang.Object key) ExcelExportEntity(java.lang.String name, java.lang.Object key, int width) DEMO

一次导出多个对象

其实就是对第一个方法的一个封装,没有什么需要介绍的

定义样式

自定义Cell样式接口,方便大家自己处理Excel的样式

提供了三个实现,

ExcelExportStylerBorderImpl有边框样式

ExcelExportStylerColorImpl有边框间隔行样式 ExcelExportStylerDefaultImpl 默认的样式

样式使用方法ExportParams中调用setStyler就可以了,必须实现有参构造器

publicExcelExportStylerBorderImpl(Workbook workbook) { super.createStyles(workbook); }

Excel模板导出

为了更好的导出Excel,以及Excel的样式定义,复杂的表头等功能对已代码设置的很复杂的情况下使用模板确实是更好的办法,下面这样的样式我们自己实现要实现好久,但是模板就比较容易实现了,Excel分分钟的事情,模板秉承的是继承你的Cell样式,尽量不破坏你的东西

1) 2) 3) 4) 5) 6) 7) 8) 9) 10) 11) 12) 13)

模板支持的语法

空格分割

三目运算 {{test ? obj:obj2}}

n: 表示这个cell是数值类型 {{n:}}

le: 代表长度{{le:()}} 在if/else 运用{{le:() > 8 ? obj1 : obj2}} fd: 格式化时间 {{fd:(obj;yyyy-MM-dd)}} fn: 格式化数字 {{fn:(obj;###.00)}}

单引号表示常量值 '' 比如'1' 那么输出的就是 1 fe: 遍历数据,创建row !fe: 遍历数据不创建row

$fe: 下移插入,把当前行,下面的行全部下移.size()行,然后插入 !if: 删除当前列 {{!if:(test)}} &NULL&控制 ]] 换行符

语法就上面这些,前面7个都没啥需要讲的都是我们一样的语法,说下下面几个

8,9,10都是一样的就是for循环创建表格,不同的是fe是全部都创建自己的表格,!fe是先使用现有的表格,不够了再创建表格,$fe是把这样之下的先往下移动X行,在便利,说下3个的场景 第一个不说了,是不是都要创建

第二个是:比如我们就创建4行或者<4行,4行之后还有别的数据,那么我们就使用!fe来迭代

生成后不会影响其他数据

第三个是:当遍历行下面仍有数据时,不影响下面的数据,进行插入操作