ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:903.61KB ,
资源ID:3989148      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3989148.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(EasyPoi教程.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

EasyPoi教程.docx

1、EasyPoi教程简要教程目录简要教程 1前面的话 1第一章 Excel篇 2Excel的注解 2Excel导出 6Excel模板导出 11Excel导入 14第二章 Word篇 16Word模板导出 16第三章PDF导出 17第四章HTML导出 18HTML导出 18第五章 Excel 图表 19第六章缓存以及工具类 19修改记录日期版本作者修订类型描述2016-1-2010JueYue新建2016-1-221.1JueYue修改导入校验,文件合法性校验前面的话 EasyPoi的编写其实是一次意外,之前我不太愿意写导入导出,因为代码号复杂,每次一个Excel 都要写几百行,仅有少量的复用,一

2、次需要写许多的导入导出,又没有人手,正好看到了Jeecg对应Poi的一个封装,但是他的封装比较简单,就自己在他思想的基础上开始构建现在的项目了. EasyPoi秉承思想就是尽量简单,入库少,可以很快把简单的工作干了这是第一个版本的功能,后来慢慢用的人多了,也就功能慢慢丰富了,现在包含了Excel的导入导出,Word的导出,PDF的导出,Excel Charts的导出,Html的导出5个功能模块,重点还是Excel,毕竟Excel是最常用的. EasyPoi已经走过了3年,未来也会继续走,保持现有简单的功能继续前进. 程序员你懂得,懒得测试,目前测试覆盖率,基本功能我都写了,没有的就遇到了再说吧

3、第一章 Excel篇Excel的注解本来注解是整个模块的精髓,不过随着模板的使用,他的重要性也就不如以前了,不过还是最简单的使用方式.注解都是在easypoi-annotation这个jar,拆分开的目的就是为了让多模块的maven项目少引用,因为easypoi-annotation是没有任何依赖的,只是单纯的注解ExcelExcel导出基本注释这个注解是整个的基石,简单项目只靠这一个注解就可以完成所有功能限定符和类型可选元素和说明java.lang.StringdatabaseFormat导出时间设置,如果字段是Date类型则不需要设置数据库如果是string 类型,这个需要设置这个数据库格

4、式java.lang.StringexportFormat导出的时间格式,以这个是否为空来判断是否需要格式化日期java.lang.Stringformat时间格式,相当于同时设置了exportFormat和importFormatdoubleheight导出时在excel中每个列的高度单位为字符,一个汉字=2个字符intimageType导出类型 1 从file读取 2 是从数据库中读取默认是文件同样导入也是一样的java.lang.StringimportFormat导入的时间格式,以这个是否为空来判断是否需要格式化日期booleanisHyperlink这个是不是超链接,如果是需要实现接

5、口返回对象java.lang.StringisImportField导入时会校验这个字段,看看这个字段是不是导入的Excel中有,如果没有说明是错误的Excel 本意是想用true的,想想还是false比较好可以使用a_id,b_id来确实是否使用booleanisStatistics是否自动统计数据,如果是统计,true的话在最后追加一行统计,把所有数据都和这个处理会吞没异常,请注意这一点booleanisWrap是否换行即支持nintmergeRely合并单元格依赖关系,比如第二列合并是基于第一列则1就可以了booleanmergeVertical纵向合并内容相同的单元格booleanne

6、edMerge是否需要纵向合并单元格(用于含有list中,单个的单元格,合并list创建的多个row)java.lang.StringorderNum展示到第几个可以使用a_id,b_id来确定不同排序java.lang.Stringreplace值得替换导出是a_id,b_id 导入反过来,所以只用写一个java.lang.StringsavePath导入路径,如果是图片可以填写,默认是upload/className/ IconEntity这个类对应的就是upload/Icon/java.lang.Stringsuffix文字后缀,如% 90 变成90%inttype导出类型 1 是文本

7、2 是图片,3是函数默认是文本doublewidth导出时在excel中每个列的宽单位为字符,一个汉字=2个字符如以列名列内容中较合适的长度例如姓名列6 【姓名一般三个字】性别列4【男女占1,但是列标题两个汉字】限制1-255这当中需要说明的是:mergeVertical和mergeRely这两者是一起存在的功能,就是纵向合并单元和,mergeRely是判断和前面单元格的依赖,可用于多种集合,不太好导出情况,来合并处理DEMO:最简单的导出复杂点的导出:ExcelTarget标记导入ID就一个功能标记ID,用以区别多个导出对象,便于一个对象用于多个导出实例java.lang.Stringval

8、ue定义excel导出ID 来限定导出字段DEMO使用方法ExcelEntity用来标示导出对象因为对象不是基础属性,需要继续判断,所以加入这个属性,这个属性可以无限迭代,ID和ExcelTarget的ID功能一致java.lang.Stringid定义excel导出ID 来限定导出字段,处理一个类对应多个不同名称的情况java.lang.Stringname导出时,对应数据库的字段主要是用户区分每个字段,不能有annocation重名的导出时的列名导出排序跟定义了annotation的字段的顺序有关可以使用a_id,b_id来确实是否使用ExcelCollection标示集合集合只能一层,如

9、果name有值,表头就会有两行,有过没值就会只有一行java.lang.Stringid定义excel导出ID 来限定导出字段,处理一个类对应多个不同名称的情况java.lang.StringorderNum展示到第几个同样可以使用a_id,b_idjava.lang.Classtype创建时创建的类型默认值是arrayListDEMOExcelIgnore忽略字段标记为excel 创建实体忽略,放置死循环的造成注解基本上就到这来完了,主要还是各个注解直接的搭配使用,核心还是在于Excel,主要的功能也是在这个地方,请大家开发之前先看看这个吧Excel导出导出统一入口ExcelExportUt

10、ilexcel,导入导出,模板导出的基础参数,数据处理的接口privateIExcelDataHandlerdataHanlder数据处理接口,以此为主,replace,format都在这后面默认实现ExcelDataHandlerDefaultImpl ,用户自定义的实现可以继承这个当然你可以可以用spring来管理这个对象,都是一样的ExportParams导出参数注解导出和map导出的参数设置private booleanaddIndex是否添加序列private shortcolor表头颜色private java.lang.Stringexclusions过滤的属性private i

11、ntfreezeCol冰冻列private shortheaderColor属性说明行的颜色例如:HSSFColor.SKY_BLUE.index默认private java.lang.StringindexName是否添加需要需要private booleanisAppendGraph是否追加图形private booleanisCreateHeadRows是否创建表头private booleanisDynamicData是否动态获取数据private java.lang.StringsecondTitle第二行名称private shortsecondTitleHeight表格名称pri

12、vate java.lang.StringsheetNamesheetNameprivatejava.lang.ClassstyleExcel 导出styleprivate java.lang.Stringtitle表格名称private shorttitleHeight表格名称privateExcelTypetypeExcel 导出版本对象注解导出注解导出第一步先给对象加上注解,这个我就复述了,之后查出来对象列表,这个大家也都懂就一个方法,大数据量推荐使用2007版本,效率高,生成文件小,Class 填的就是Collection中的对象DEMOMap的导出有时候我们希望导出一个map集合或者

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

14、key)ExcelExportEntity(java.lang.Stringname, java.lang.Objectkey, intwidth)DEMO一次导出多个对象其实就是对第一个方法的一个封装,没有什么需要介绍的定义样式自定义Cell样式接口,方便大家自己处理Excel的样式提供了三个实现,ExcelExportStylerBorderImpl有边框样式ExcelExportStylerColorImpl有边框间隔行样式ExcelExportStylerDefaultImpl 默认的样式样式使用方法ExportParams中调用setStyler就可以了,必须实现有参构造器publi

15、cExcelExportStylerBorderImpl(Workbook workbook) super.createStyles(workbook);Excel模板导出为了更好的导出Excel,以及Excel的样式定义,复杂的表头等功能对已代码设置的很复杂的情况下使用模板确实是更好的办法,下面这样的样式我们自己实现要实现好久,但是模板就比较容易实现了,Excel分分钟的事情,模板秉承的是继承你的Cell样式,尽量不破坏你的东西 模板支持的语法1) 空格分割2) 三目运算 test ? obj:obj23) n: 表示这个cell是数值类型 n:4) le: 代表长度le:() 在if/el

16、se 运用le:() 8 ? obj1 : obj25) fd: 格式化时间 fd:(obj;yyyy-MM-dd)6) fn: 格式化数字 fn:(obj;#.00)7) 单引号表示常量值 比如1 那么输出的就是 18) fe: 遍历数据,创建row9) !fe: 遍历数据不创建row10) $fe: 下移插入,把当前行,下面的行全部下移.size()行,然后插入11) !if: 删除当前列 !if:(test)12) &NULL&控制13) 换行符语法就上面这些,前面7个都没啥需要讲的都是我们一样的语法,说下下面几个8,9,10都是一样的就是for循环创建表格,不同的是fe是全部都创建自己

17、的表格,!fe是先使用现有的表格,不够了再创建表格,$fe是把这样之下的先往下移动X行,在便利,说下3个的场景第一个不说了,是不是都要创建第二个是:比如我们就创建4行或者4行,4行之后还有别的数据,那么我们就使用!fe来迭代生成后不会影响其他数据第三个是:当遍历行下面仍有数据时,不影响下面的数据,进行插入操作输出结果导出操作提供两个方法,一个是都是模板,第二个是第一个封装,就是多个sheet的模板导出我的使用方式,如果是样式复杂就是模板,样式简单就是代码导出的Excel导入注解导入基于Excel注解导出,只要反过来看代码就可以了,基本上不用讲什么,导出支持的功能,基本上导入同样支持Map导入传

18、入对象传入map就可以,返回Map这个Object请大家注意了不确定是什么不过都是基本类型和上面的是同一个方法Sax导入支持的功能不如上面的丰富,不在会吃图片,紧支持基本类型,对于大数据量导入请使用Sax,避免造成内存溢出Excel数据校验校验是集成的JSR303,可选hibernate或者Apache的实现,这个我就不讲了,请大家自行XX,功能都是一样的,需要开启设置在ImportParams中这是一个事前校验,一般是数据的合法性,针对数据唯一性什么的,可以使用接口校验同时提供了导入校验的接口,是整个对象一起校验的,返回校验结果就可以,比较简单比如下面说下错误信息的处理错误信息默认会追加到这

19、一行最后创建一个Cell中去,就是你可以返回这个Excel给用户,再让他改,同时,我们也希望存放到数据库中这是我们需要我们的Entity实现一个接口这样我们会把错误信息追加到你的对象中用于保存到数据库中同时,会返回校验Result对象,用于判断是不是有错误,集合,已经Excel文件合法性校验文件合法性校验,是校验我们的文件是不是我们给对方的模板,是否包含全了我们要求的列这个校验是中断校验,发现校验失败后会爆出异常,异常枚举值校验方法有两种,1.注解校验,2数组校验,推荐后者1. 注解校验在注解中加入DEMO:2. 数据值校验,就是在导入参数中动态设置需要校验的对象比如:如果是有集合也可以校验同

20、样抛出校验异常信息,终止导入流程第二章 Word篇Word模板导出因为POI的Word 2003支持的很不好,我也就不进行支持了,现在只支持2007版本支持值替换,图片替换,table等功能基本功能是基于Excel 模板导出功能的clone,实现了Excel模板中的大部分功能,语法也都是保持一致,目前不能嵌套table请注意语法啥的就不讲了,说下不同的地方提供一个专用的图片替换类,判断这个对象会把这个地方替换成图片第三章PDF导出Pdf导出同样是基于Excel模块的功能扩展,目前只支持Excel注解导出和map导出,还没支持模板提供了样式接口IPdfExportStyler,用于创建Cell时

21、候的样式设置方法也和Excel;类似,但是要提供流第四章HTML导出HTML导出目前只支持Excel转为HTML,效果还算凑合,给用户看看可以,企业级还是需要专业的解决方案导出返回两种界面,支持图片转换toTableHtml只返回table对象toAllHtml返回包含html的对象导出代码,算是一个单独的工具类第五章 Excel图表第六章 Spring web集成 Spring mvc的配置使用spring mvc需要在spring-mvc.xml或者其他的配置文件中进行配置,主要是默认视图级别设置低点Bean视图设置级别高一些,然后把我们的视图配置上,就完成了2.0.8版本后加上了Cont

22、roller 里面只要在加入就可以了,但是解析器还是要配置的这样就算集成完成了,下面我们介绍各种VIEW注解viewJeecgSingleExcelView第七章缓存以及工具类缓存缓存是基于guava来实现的提供了excel模板读取缓存,Html缓存,word模板读取缓存,图片读取缓存讲下自定义文件读取IFileLoader提供文件读取接口,自己实现这个接口,比如然后根据自己的需要可以把自己实现的类设置为全局的类,或者线程内使用的类POICacheManager提供对应的方法对象缓存时间最大缓存数量Excel,Word1小时50Html7天200个Image1天200个每个cache都提供了set方法,以便大家设置自己的实现工具类PoiReflectorUtil反射工具类,从mybatis上copy下来的PoiMergeCellUtil纵向合并工具类合并内容相同的单元格PoiCellUtil读取单元格值,判断合并情况

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1