Skip to content

rwocj/easypoi

Repository files navigation

Maven Central

EasyPoi Excel和 Word简易工具类

基于开源的easypoi 4.4.0的完善

1、修复图片导出

2、修复导出Excel时可能导致内存泄露

3、poi升级至4.1.2

4、springboot3使用4.4.0-jakarta,此版本poi为5.2.5

5、hutool-all依赖设置为可选,如果使用库里的wps服务,可手动引入

版本介绍

history.md

基础示例

basedemo.md


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<ExcelExportEntity> entityList,Collection<?> dataSet)
    3.数据量大超过5W,还在100W以内
        注解方式 ExcelExportUtil.exportBigExcel(ExportParams entity, Class<?> pojoClass,IExcelExportServer server, Object queryParams)
        自定义方式: ExcelExportUtil.exportBigExcel(ExportParams entity, List<ExcelExportEntity> excelParams,IExcelExportServer server, Object queryParams)
    4.样式复杂,数据量尽量别大
        模板导出 ExcelExportUtil.exportExcel(TemplateExportParams params, Map<String, Object> map)
    5.一次导出多个风格不一致的sheet
        模板导出 ExcelExportUtil.exportExcel(Map<Integer, Map<String, Object>> map,TemplateExportParams params) 
    6.一个模板但是要导出非常多份
        模板导出 ExcelExportUtil.exportExcelClone(Map<Integer, List<Map<String, Object>>> 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<ExcelExportEntity> entityList, OutputStream outputStream)
    9.word导出
        模板导出: WordExportUtil.exportWord07(String url, Map<String, Object> 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

maven库应该都可以了 SNAPSHOT 版本-很少发布 https://oss.sonatype.org/content/groups/public/

<dependency>
    <groupId>top.rwocj</groupId>
    <artifactId>easypoi-spring-boot-starter</artifactId>
    <version>4.4.0</version>
</dependency>
        <!-- 建议只用start -->
<dependency>
<groupId>top.rwocj</groupId>
<artifactId>easypoi-base</artifactId>
<version>4.4.0</version>
</dependency>
<dependency>
<groupId>top.rwocj</groupId>
<artifactId>easypoi-web</artifactId>
<version>4.4.0</version>
</dependency>
<dependency>
<groupId>top.rwocj</groupId>
<artifactId>easypoi-annotation</artifactId>
<version>4.4.0</version>
</dependency>

pom说明

word和sax读取的时候才使用,就不是必须的了,请手动引用,JSR303的校验也是可选的,PDF的jar也是可选的

            <!-- sax 读取时候用到的 -->
<dependency>
    <groupId>xerces</groupId>
    <artifactId>xercesImpl</artifactId>
    <version>${xerces.version}</version>
    <optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>${poi.version}</version>
<optional>true</optional>
</dependency>

        <!-- Word 需要使用 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>ooxml-schemas</artifactId>
<version>1.3</version>
<optional>true</optional>
</dependency>

        <!-- 校验,下面两个实现 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.1.3.Final</version>
<optional>true</optional>
</dependency>

<dependency>
<groupId>org.apache.bval</groupId>
<artifactId>org.apache.bval.bundle</artifactId>
<version>1.1.0</version>
</dependency>

        <!-- PDF -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.6</version>
<optional>true</optional>
</dependency>

<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
<optional>true</optional>
</dependency>

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)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages