1、时间格式,相当于同时设置了exportFormat 和 importFormatdoubleheight导出时在excel中每个列的高度 单位为字符,一个汉字=2个字符intimageType导出类型 1 从file读取 2 是从数据库中读取 默认是文件 同样导入也是一样的importFormat导入的时间格式,以这个是否为空来判断是否需要格式化日期booleanisHyperlink这个是不是超链接,如果是需要实现接口返回对象isImportField导入时会校验这个字段,看看这个字段是不是导入的Excel中有,如果没有说明是错误的Excel 本意是想用true的,想想还是false比较好
2、可以使用a_id,b_id来确实是否使用isStatistics是否自动统计数据,如果是统计,true的话在最后追加一行统计,把所有数据都和 这个处理会吞没异常,请注意这一点isWrap是否换行 即支持nintmergeRely合并单元格依赖关系,比如第二列合并是基于第一列 则1就可以了mergeVertical纵向合并内容相同的单元格needMerge是否需要纵向合并单元格(用于含有list中,单个的单元格,合并list创建的多个row)orderNum展示到第几个可以使用a_id,b_id来确定不同排序java.lang.Stringreplace值得替换 导出是a_id,b_id 导入反
3、过来,所以只用写一个savePath导入路径,如果是图片可以填写,默认是upload/className/ IconEntity这个类对应的就是upload/Icon/suffix文字后缀,如% 90 变成90%type导出类型 1 是文本 2 是图片,3是函数 默认是文本width导出时在excel中每个列的宽 单位为字符,一个汉字=2个字符 如 以列名列内容中较合适的长度 例如姓名列6 【姓名一般三个字】 性别列4【男女占1,但是列标题两个汉字】 限制1-255这当中需要说明的是:mergeVertical和mergeRely这两者是一起存在的功能,就是纵向合并单元和, mergeRely
4、是判断和前面单元格的依赖,可用于多种集合,不太好导出情况,来合并处理DEMO:最简单的导出复杂点的导出:ExcelTarget 标记导入ID就一个功能标记ID,用以区别多个导出对象,便于一个对象用于多个导出实例value定义excel导出ID 来限定导出字段DEMO使用方法ExcelEntity 用来标示导出对象因为对象不是基础属性,需要继续判断,所以加入这个属性,这个属性可以无限迭代,ID和ExcelTarget的ID功能一致id定义excel导出ID 来限定导出字段,处理一个类对应多个不同名称的情况name导出时,对应数据库的字段 主要是用户区分每个字段, 不能有annocation重名的
5、 导出时的列名 导出排序跟定义了annotation的字段的顺序有关 可以使用a_id,b_id来确实是否使用ExcelCollection 标示集合集合只能一层,如果name有值,表头就会有两行,有过没值就会只有一行展示到第几个同样可以使用a_id,b_idjava.lang.Class创建时创建的类型 默认值是 arrayListExcelIgnore 忽略字段标记为excel 创建实体忽略,放置死循环的造成注解基本上就到这来完了,主要还是各个注解直接的搭配使用,核心还是在于Excel,主要的功能也是在这个地方,请大家开发之前先看看这个吧Excel导出导出统一入口 ExcelExportU
6、tilexcel,导入导出,模板导出的基础参数,数据处理的接口privateIExcelDataHandlerdataHanlder数据处理接口,以此为主,replace,format都在这后面默认实现ExcelDataHandlerDefaultImpl ,用户自定义的实现可以继承这个当然你可以可以用spring来管理这个对象,都是一样的ExportParams 导出参数注解导出和map导出的参数设置private booleanaddIndex是否添加序列private shortcolor表头颜色private java.lang.Stringexclusions过滤的属性private
7、 intfreezeCol冰冻列headerColor属性说明行的颜色 例如:HSSFColor.SKY_BLUE.index 默认private java.lang.StringindexName是否添加需要需要isAppendGraph是否追加图形isCreateHeadRows是否创建表头isDynamicData是否动态获取数据secondTitle第二行名称secondTitleHeight表格名称sheetNameprivate java.lang.Class 8 ? obj1 : obj25)fd: 格式化时间 fd:(obj;yyyy-MM-dd)使用java的时间格式化,进行
8、格式化处理6)fn: 格式化数字 fn:#.00)处理小数点问题7)单引号表示常量值 比如1 那么输出的就是 18)fe: 遍历数据,创建row9)!fe: 遍历数据不创建row10)$fe: 下移插入,把当前行,下面的行全部下移.size()行,然后插入11)#fe: 行遍历其他都是列遍历,这个是横向遍历12)!if: 删除当前列 !(test)13)&NULL& 控制14) 换行符解决多行遍历的问题,详情看下嘛的遍历标签遍历标签的使用语法就上面这些,前面7个都没啥需要讲的都是我们一样的语法,说下下面几个8,9,10都是一样的就是for循环创建表格,不同的是fe是全部都创建自己的表格,!fe
9、是先使用现有的表格,不够了再创建表格,$fe是把这样之下的先往下移动X行,在便利,说下3个的场景第一个不说了,是不是都要创建第二个是:比如我们就创建4行或者4行,4行之后还有别的数据,那么我们就使用!fe来迭代生成后不会影响其他数据第三个是:当遍历行下面仍有数据时,不影响下面的数据,进行插入操作输出结果多行遍历针对多行遍历问题,给出了 作为换行符用来标记list还没执行完的问题,多行遍历解决了部分Excel处理难的问题生产效果对应测试类TemplateForEachTest2横向遍历效果用来解决横向纵向双向遍历统计的问题对应测试类ExcelExportTemplateColFeTestSUM的
10、设计思路因为模板中的SUM具有位置和属性的双重不确定性,所以针对SUM的这种运算,打算使用记忆的方法来预先记录SUM的位置以及需要SUM的对象,等待遍历处理的时候后置处理了,也防止遍历后,再扫描整个界面来处理问题 SUM的位置可以在FE的上面也可以在FE的下面,也可以直接在FE中来直接SUM比如在FE后在FE中在FE前为了防止效率的浪费,回预先记录这个SUM的位置,用了有效处理整个SUM后期处理寻址的问题,在使用中SUM只能SUM list遍历中的数据,不能SUM其他的数据,位置可以自己定义,没有要求导出操作提供两个方法,一个是都是模板,第二个是第一个封装,就是多个sheet的模板导出我的使用
11、方式,如果是样式复杂就是模板,样式简单就是代码导出的Excel导入注解导入基于Excel注解导出,只要反过来看代码就可以了,基本上不用讲什么,导出支持的功能,基本上导入同样支持Map导入传入对象传入map就可以,返回Map 这个Object请大家注意了不确定是什么不过都是基本类型和上面的是同一个方法Sax导入支持的功能不如上面的丰富,不在会吃图片,紧支持基本类型,对于大数据量导入请使用Sax,避免造成内存溢出Excel数据校验校验是集成的JSR303,可选hibernate或者Apache的实现,这个我就不讲了,请大家自行XX,功能都是一样的,需要开启设置在ImportParams中这是一个事
12、前校验,一般是数据的合法性,针对数据唯一性什么的,可以使用接口校验同时提供了导入校验的接口,是整个对象一起校验的,返回校验结果就可以,比较简单比如下面说下错误信息的处理错误信息默认会追加到这一行最后创建一个Cell中去,就是你可以返回这个Excel给用户,再让他改,同时,我们也希望存放到数据库中这是我们需要我们的Entity实现一个接口这样我们会把错误信息追加到你的对象中用于保存到数据库中同时,会返回校验Result对象,用于判断是不是有错误,集合,已经Excel文件合法性校验文件合法性校验,是校验我们的文件是不是我们给对方的模板,是否包含全了我们要求的列这个校验是中断校验,发现校验失败后会爆
13、出异常,异常枚举值校验方法有两种,1.注解校验,2数组校验,推荐后者1.注解校验在注解中加入2.数据值校验,就是在导入参数中动态设置需要校验的对象比如:如果是有集合也可以校验同样抛出校验异常信息,终止导入流程第二章Word篇Word模板导出因为POI的Word 2003支持的很不好,我也就不进行支持了,现在只支持2007版本支持值替换,图片替换,table等功能基本功能是基于Excel 模板导出功能的clone,实现了Excel模板中的大部分功能,语法也都是保持一致,目前不能嵌套table请注意语法啥的就不讲了,说下不同的地方提供一个专用的图片替换类,判断这个对象会把这个地方替换成图片第三章P
14、DF导出Pdf导出同样是基于Excel模块的功能扩展,目前只支持Excel注解导出和map导出,还没支持模板提供了样式接口IPdfExportStyler,用于创建Cell时候的样式设置方法也和Excel;类似,但是要提供流第四章HTML导出HTML导出目前只支持Excel转为HTML,效果还算凑合,给用户看看可以,企业级还是需要专业的解决方案导出返回两种界面,支持图片转换toTableHtml 只返回table对象toAllHtml 返回包含html的对象导出代码,算是一个单独的工具类第五章 Excel 图表第六章 Spring web集成 Spring mvc 的配置使用spring mv
15、c 需要在spring-mvc.xml或者其他的配置文件中进行配置,主要是默认视图级别设置低点Bean视图设置级别高一些,然后把我们的视图配置上,就完成了2.0.8版本后加上了Controller 里面只要在context:component-scan base-package=org.jeecgframework.poi.excel.view加入就可以了,但是解析器还是要配置的这样就算集成完成了,下面我们介绍各种VIEW注解view JeecgSingleExcelView模板View的使用第七章 缓存以及工具类缓存缓存是基于guava来实现的提供了excel模板读取缓存,Html缓存,word模板读取缓存,图片读取缓存讲下自定义文件读取IFileLoader 提供文件读取接口,自己实现这个接口,比如然后根据自己的需要可以把自己实现的类设置为全局的类,或者线程内使用的类POICacheManager提供对应的方法对象缓存时间最大缓存数量Excel,Word1小时50Html7天200个Image1天每个cache都提供了set方法,以便大家设置自己的实现工具类PoiReflectorUtil 反射工具类,从mybatis上copy下来的PoiMergeCellUtil 纵向合并工具类 合并内容相同的单元格PoiCellUtil 读取单元格值,判断合并情况
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1