轻量且高效的Excel读写工具EEC

Excel工具EEC(Excel Export Core)是一款轻量且高效的Excel读写工具,EEC的设计初衷是为了解决Apache POI内存高、速度慢且API臃肿的诟病。EEC的底层并不依赖POI包,所有的底层代码均自己实现,事实上EEC仅依赖dom4jslf4j,前者用于小文件xml读取,后者统一日志接口。

开源地址:eec: 一款轻量且高效的Excel读写工具,它具有包体小、接入代码量少和运行时消耗资源少等优点。它支持10M内存读写百万级数据,同时支持Stream+Lambda方式读文件使你可以像操作集合类一样操作Excelicon-default.png?t=N7T8https://gitee.com/wangguanquan/eec

它具有以下主要特点和功能:

一、主要特点

  1. 包体小:EEC的体积相对较小,便于集成和使用。
  2. 接入代码量少:EEC的接入代码简洁,降低了开发成本和时间。
  3. 运行时消耗资源少:EEC在运行时对系统资源的消耗较低,适合处理大数据量的Excel文件。
  4. 独立底层实现:EEC的底层并不依赖Apache POI等常见Excel处理库,而是独立实现了所有底层代码,仅依赖dom4j(用于小文件xml读取)和slf4j(统一日志接口)。

二、主要功能

  1. 大数据量支持:EEC支持在较小的内存(如10MB)下读写百万级数据,解决了Apache POI等库内存高、速度慢的问题。
  2. 流式读写:EEC支持Stream+Lambda方式读文件,可以像操作集合类一样操作Excel,按需加载数据,不会将整个文件读入内存。
  3. 多种数据格式支持:EEC不仅支持xlsx和xls格式的Excel文件,还支持CSV格式,并提供了CSV与Excel格式互转的功能。
  4. 动态样式:EEC支持在导出Excel时设置动态样式,如根据数据内容改变单元格颜色、字体等,提高了报表的可读性和美观度。
  5. 自适应列宽:EEC支持自适应列宽功能,对于中文内容的支持更加精准,避免了列宽不足导致的内容溢出问题。
  6. 模板导出:EEC支持使用xls和xlsx模板格式进行导出,可以合并多个Excel文件,提高了报表制作的灵活性和效率。

三、使用场景

EEC适用于需要处理大数据量Excel文件的场景,如数据报表生成、数据分析、数据导出等。同时,由于其低资源消耗和高效读写能力,EEC也适合在性能/内存要求较高的环境中使用。

四、使用方法

1、引入依赖

<dependency>
    <groupId>org.ttzero</groupId>
    <artifactId>eec</artifactId>
    <version>${eec.version}</version>
</dependency>

2、动态样式

new Workbook("2021小五班期未考试成绩")
    .addSheet(new ListSheet<>("期末成绩", students
         , new Column("学号", "id", int.class)
         , new Column("姓名", "name", String.class)
         , new Column("成绩", "score", int.class, n -> (int) n < 60 ? "不合格" : n)
    ).setStyleProcessor((o, style, sst) -> 
            o.getScore() < 60 ? sst.modifyFill(style, new Fill(PatternType.solid, Color.orange)) : style)
    ).writeTo(Paths.get("f:/excel"));

 

3、宽度自适应

// 测试类
public static class WidthTestItem {
    @ExcelColumn(value = "整型", format = "#,##0_);[Red]-#,##0_);0_)")
    private Integer nv;
    @ExcelColumn("字符串(en)")
    private String sen;
    @ExcelColumn("字符串(中文)")
    private String scn;
    @ExcelColumn(value = "日期时间", format = "yyyy-mm-dd hh:mm:ss")
    private Timestamp iv;
}

new Workbook("Auto Width Test")
    .setAutoSize(true) // <- 自适应列宽
    .addSheet(new ListSheet<>(randomTestData()))
    .writeTo(Paths.get("f:/excel"));

4、多级表头

 public static class RepeatableEntry {
    @ExcelColumn("运单号")
    private String orderNo;
    @ExcelColumn("收件地址")
    @ExcelColumn("省")
    private String rProvince;
    @ExcelColumn("收件地址")
    @ExcelColumn("市")
    private String rCity;
    @ExcelColumn("收件地址")
    @ExcelColumn("详细地址")
    private String rDetail;
    @ExcelColumn("收件人")
    private String recipient;
    @ExcelColumn("寄件地址")
    @ExcelColumn("省")
    private String sProvince;
    @ExcelColumn("寄件地址")
    @ExcelColumn("市")
    private String sCity;
    @ExcelColumn("寄件地址")
    @ExcelColumn("详细地址")
    private String sDetail;
    @ExcelColumn("寄件人")
    private String sender;
}

 

 

五、总结

EEC作为一款轻量且高效的Excel读写工具,凭借其包体小、接入代码量少、运行时消耗资源少以及强大的数据处理能力,在大数据量Excel文件处理领域具有显著优势。无论是数据报表生成、数据分析还是数据导出等场景,EEC都能提供高效、可靠的解决方案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

易道合之逍遥峰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值