EasyPoi Excel和 Word简易工具类
easypoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员
就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板
语言(熟悉的表达式语法),完成以前复杂的写法
官网: http://www.wupaas.com/
邮箱: xue315998@qq.com
QQ群: 1群 364192721(满) 2 群116844390
开发者:魔幻之翼 xf.key@163.com
官网
英文介绍 希望加个关注
开发指南
下一步计划
国际化,翻译文档以及注释
pdf全部改为模板导出方式
word模板和excel功能同步
cn.afterturn:企业专用easypoi
版本介绍
基础示例
EasyPoi的主要特点
1.设计精巧,使用简单
2.接口丰富,扩展简单
3.默认值多,write less do more
4.AbstractView 支持,web导出可以简单明了
什么场景该用哪个方法
- 导出
1.正规excel导出 (格式简单,数据量可以,5W以内吧)
注解方式: ExcelExportUtil.exportExcel(ExportParams entity, Class> pojoClass,Collection> dataSet)
2.不定多少列,但是格式依然简单数据库不大
自定义方式: ExcelExportUtil.exportExcel(ExportParams entity, List entityList,Collection> dataSet)
3.数据量大超过5W,还在100W以内
注解方式 ExcelExportUtil.exportBigExcel(ExportParams entity, Class> pojoClass,IExcelExportServer server, Object queryParams)
自定义方式: ExcelExportUtil.exportBigExcel(ExportParams entity, List excelParams,IExcelExportServer server, Object queryParams)
4.样式复杂,数据量尽量别大
模板导出 ExcelExportUtil.exportExcel(TemplateExportParams params, Map map)
5.一次导出多个风格不一致的sheet
模板导出 ExcelExportUtil.exportExcel(Map> map,TemplateExportParams params)
6.一个模板但是要导出非常多份
模板导出 ExcelExportUtil.exportExcelClone(Map>> map,TemplateExportParams params)
7.模板无法满足你的自定义,试试html
自己构造html,然后我给你转成excel ExcelXorHtmlUtil.htmlToExcel(String html, ExcelType type)
8.数据量过百万级了.放弃excel吧,csv导出
注解方式: CsvExportUtil.exportCsv(CsvExportParams params, Class> pojoClass, OutputStream outputStream)
自定义方式: CsvExportUtil.exportCsv(CsvExportParams params, List entityList, OutputStream outputStream)
9.word导出
模板导出: WordExportUtil.exportWord07(String url, Map map)
10.PDF导出
模板导出: TODO
- 导入
如果想提高性能 ImportParams 的concurrentTask 可以帮助并发导入,仅单行,最小1000
excel有单个的那种特殊读取,readSingleCell 参数可以支持
1. 不需要检验,数据量不大(5W以内)
注解或者MAP: ExcelImportUtil.importExcel(File file, Class> pojoClass, ImportParams params)
2. 需要导入,数据量不大
注解或者MAP: ExcelImportUtil.importExcelMore(InputStream inputstream, Class> pojoClass, ImportParams params)
3. 数据量大了,或者你有特别多的导入操作,内存比较少,仅支持单行
SAX方式 ExcelImportUtil.importExcelBySax(InputStream inputstream, Class> pojoClass, ImportParams params, IReadHandler handler)
4. 数据量超过EXCEL限制,CSV读取
小数据量: CsvImportUtil.importCsv(InputStream inputstream, Class> pojoClass,CsvImportParams params)
大数据量: CsvImportUtil.importCsv(InputStream inputstream, Class> pojoClass,CsvImportParams params, IReadHandler readHandler)
关于Excel导出XLS和XLSX区别
1.导出时间XLS比XLSX快2-3倍
2.导出大小XLS是XLSX的2-3倍或者更多
3.导出需要综合网速和本地速度做考虑^~^
几个工程的说明
1.easypoi 父包--作用大家都懂得
2.easypoi-annotation 基础注解包,作用与实体对象上,拆分后方便maven多工程的依赖管理
3.easypoi-base 导入导出的工具包,可以完成Excel导出,导入,Word的导出,Excel的导出功能
4.easypoi-web 耦合了spring-mvc 基于AbstractView,极大的简化spring-mvc下的导出功能
5.sax 导入使用xercesImpl这个包(这个包可能造成奇怪的问题哈),word导出使用poi-scratchpad,都作为可选包了
maven
cn.afterturn
easypoi-spring-boot-starter
4.2.0
cn.afterturn
easypoi-base
4.2.0
cn.afterturn
easypoi-web
4.2.0
cn.afterturn
easypoi-annotation
4.2.0
pom说明
word和sax读取的时候才使用,就不是必须的了,请手动引用,JSR303的校验也是可选的,PDF的jar也是可选的
xerces
xercesImpl
${xerces.version}
true
org.apache.poi
poi-scratchpad
${poi.version}
true
org.apache.poi
ooxml-schemas
1.3
true
org.hibernate
hibernate-validator
5.1.3.Final
true
org.apache.bval
org.apache.bval.bundle
1.1.0
com.itextpdf
itextpdf
5.5.6
true
com.itextpdf
itext-asian
5.2.0
true
Test 测试覆盖率
包
类
方法
行
cn
100% (0/0)
100% (0/0)
100% (0/0)
cn.afterturn
100% (0/0)
100% (0/0)
100% (0/0)
cn.afterturn.easypoi
0% (0/1)
0% (0/1)
0% (0/3)
cn.afterturn.easypoi.cache
100% (6/6)
83% (10/12)
60% (40/66)
cn.afterturn.easypoi.cache.manager
100% (3/3)
62% (5/8)
54% (29/53)
cn.afterturn.easypoi.configuration
0% (0/2)
0% (0/1)
0% (0/5)
cn.afterturn.easypoi.entity
100% (1/1)
83% (15/18)
66% (26/39)
cn.afterturn.easypoi.entity.vo
100% (0/0)
100% (0/0)
100% (0/0)
cn.afterturn.easypoi.excel
100% (3/3)
73% (19/26)
59% (44/74)
cn.afterturn.easypoi.excel.annotation
100% (0/0)
100% (0/0)
100% (0/0)
cn.afterturn.easypoi.excel.entity
83% (5/6)
66% (85/127)
63% (185/290)
cn.afterturn.easypoi.excel.entity.enmus
100% (3/3)
88% (8/9)
92% (13/14)
cn.afterturn.easypoi.excel.entity.params
100% (6/6)
84% (94/111)
75% (160/211)
cn.afterturn.easypoi.excel.entity.result
100% (2/2)
76% (16/21)
65% (26/40)
cn.afterturn.easypoi.excel.entity.sax
100% (1/1)
33% (2/6)
45% (5/11)
cn.afterturn.easypoi.excel.entity.vo
100% (1/1)
100% (1/1)
100% (3/3)
cn.afterturn.easypoi.excel.export
100% (2/2)
94% (17/18)
84% (202/238)
cn.afterturn.easypoi.excel.export.base
100% (2/2)
97% (33/34)
88% (353/399)
cn.afterturn.easypoi.excel.export.styler
100% (4/4)
86% (19/22)
97% (122/125)
cn.afterturn.easypoi.excel.export.template
100% (3/3)
95% (43/45)
92% (422/457)
cn.afterturn.easypoi.excel.graph
100% (0/0)
100% (0/0)
100% (0/0)
cn.afterturn.easypoi.excel.graph.builder
0% (0/1)
0% (0/8)
0% (0/92)
cn.afterturn.easypoi.excel.graph.constant
100% (0/0)
100% (0/0)
100% (0/0)
cn.afterturn.easypoi.excel.graph.entity
0% (0/3)
0% (0/26)
0% (0/49)
cn.afterturn.easypoi.excel.html
100% (2/2)
92% (24/26)
84% (242/287)
cn.afterturn.easypoi.excel.html.css
100% (2/2)
100% (10/10)
94% (166/175)
cn.afterturn.easypoi.excel.html.css.impl
100% (6/6)
60% (9/15)
74% (111/149)
cn.afterturn.easypoi.excel.html.entity
100% (0/0)
100% (0/0)
100% (0/0)
cn.afterturn.easypoi.excel.html.entity.style
100% (3/3)
100% (53/53)
100% (87/87)
cn.afterturn.easypoi.excel.html.helper
80% (4/5)
77% (24/31)
67% (154/228)
cn.afterturn.easypoi.excel.imports
100% (2/2)
92% (26/28)
79% (361/454)
cn.afterturn.easypoi.excel.imports.base
100% (1/1)
100% (9/9)
89% (102/114)
cn.afterturn.easypoi.excel.imports.sax
100% (2/2)
100% (8/8)
70% (56/80)
cn.afterturn.easypoi.excel.imports.sax.parse
100% (1/1)
77% (7/9)
58% (44/75)
cn.afterturn.easypoi.exception
100% (0/0)
100% (0/0)
100% (0/0)
cn.afterturn.easypoi.exception.excel
50% (1/2)
20% (3/15)
18% (6/32)
cn.afterturn.easypoi.exception.excel.enums
50% (1/2)
44% (4/9)
40% (9/22)
cn.afterturn.easypoi.exception.word
0% (0/1)
0% (0/3)
0% (0/6)
cn.afterturn.easypoi.exception.word.enmus
0% (0/1)
0% (0/4)
0% (0/10)
cn.afterturn.easypoi.handler
100% (0/0)
100% (0/0)
100% (0/0)
cn.afterturn.easypoi.handler.impl
100% (1/1)
33% (2/6)
44% (4/9)
cn.afterturn.easypoi.handler.inter
100% (0/0)
100% (0/0)
100% (0/0)
cn.afterturn.easypoi.hanlder
0% (0/1)
0% (0/1)
0% (0/17)
cn.afterturn.easypoi.pdf
100% (1/1)
50% (1/2)
33% (1/3)
cn.afterturn.easypoi.pdf.entity
100% (1/1)
52% (10/19)
47% (17/36)
cn.afterturn.easypoi.pdf.export
100% (1/1)
100% (14/14)
85% (131/153)
cn.afterturn.easypoi.pdf.styler
100% (1/1)
100% (4/4)
56% (9/16)
cn.afterturn.easypoi.test
100% (0/0)
100% (0/0)
100% (0/0)
cn.afterturn.easypoi.test.en
100% (3/3)
93% (15/16)
93% (31/33)
cn.afterturn.easypoi.test.entity
91% (11/12)
50% (62/122)
57% (117/202)
cn.afterturn.easypoi.test.entity.check
100% (2/2)
50% (8/16)
69% (18/26)
cn.afterturn.easypoi.test.entity.groupname
75% (3/4)
46% (25/54)
52% (48/92)
cn.afterturn.easypoi.test.entity.img
100% (1/1)
100% (8/8)
100% (16/16)
cn.afterturn.easypoi.test.entity.samename
100% (1/1)
100% (6/6)
100% (10/10)
cn.afterturn.easypoi.test.entity.statistics
100% (1/1)
100% (12/12)
100% (19/19)
cn.afterturn.easypoi.test.entity.temp
80% (4/5)
94% (32/34)
38% (52/134)
cn.afterturn.easypoi.test.web
100% (0/0)
100% (0/0)
100% (0/0)
cn.afterturn.easypoi.test.web.cfg
0% (0/1)
0% (0/1)
0% (0/4)
cn.afterturn.easypoi.tohtml
0% (0/1)
0% (0/4)
0% (0/13)
cn.afterturn.easypoi.util
100% (11/11)
85% (84/98)
73% (668/908)
cn.afterturn.easypoi.view
0% (0/13)
0% (0/27)
0% (0/376)
cn.afterturn.easypoi.word
100% (1/1)
33% (1/3)
20% (1/5)
cn.afterturn.easypoi.word.entity
100% (2/2)
44% (4/9)
45% (27/60)
cn.afterturn.easypoi.word.entity.params
50% (1/2)
22% (5/22)
14% (8/56)
cn.afterturn.easypoi.word.parse
100% (1/1)
91% (11/12)
94% (97/103)
cn.afterturn.easypoi.word.parse.excel
100% (2/2)
90% (10/11)
70% (95/135)