MyExcel 3.0.0.RC 发布:重构&性能提升
MyExcel,是一个集导入、导出、加密Excel等多项功能的Java工具包。
- 导入:提供简便的API,读取Excel内容,并转化为List< Bean >。
- 导出:可快速导出海量数据的简单列表,可生成高复杂度布局的Excel,复杂布局指的是包含多种不规则合并单元格、背景色、字体大小、斜体、下拉列表等,可自动划分Excel生成zip压缩包。
用近2个月时间重构,MyExcel 3.0.0.RC版本于今日正式发布使用,本次修改点概览如下:
- 修复DefaultExcelBuilder、DefaultStreamExcelBuilder自定义样式无效问题;
- 修复读取含小数点整数错误问题;
- 修复DefaultStreamExcelBuilder海量数据导出多sheet页,无法全部固定标题行问题;
- 修复DefaultStreamExcelBuilder续写时重设工作簿类型错误;
- 基于DefaultStreamExcelBuilder重写DefaultExcelBuilder,在保证API简单便捷的情况下,根源上解决性能问题;
- 新增DefaultExcelBuilder、DefaultStreamExcelBuilder支持图片导出;
- 新增DefaultExcelBuilder、DefaultStreamExcelBuilder支持全局样式设置,隔行样式设置;
- 新增DefaultExcelBuilder、DefaultStreamExcelBuilder、模板ExcelBuilder均支持自定义行高度;
- 新增DefaultStreamExcelBuilder新增cancel、clear接口,增强资源主动清理能力;
- 新增各项ExcelBuilder单元测试,提升项目稳定性;
- 新增读取异常时,相关行以及内容提示,加快问题定位速度;
- 删除rowAccessWindowSize选项,默认采用最佳实践,也避免使用者不熟悉导致的错误使用,不予向下兼容;
- 修改autoWidthStrategy方法为widthStrategy方法,加强接口语意;
- 原DefaultStreamExcelBuilder的start(int waitQueueSize,Class[] groups)参数改为方法选项,waitQueueSize()、groups();
- 同一文件续写时支持同名称续写;
- 重构SaxExcelReader,提升代码可读性;
- CsvBuilder新增append功能,允许对已生成的文件进行数据追加;
- DefaultStreamExcelBuilder时间处理类增加缓存,进一步提升导出性能;
需要注意的是,因大面积重构,造成了部分的API无法兼容3.0.0.RC以下版本:
- 删除rowAccessWindowSize选项;
- 原DefaultStreamExcelBuilder的start(int waitQueueSize,Class[] groups)参数改为方法选项,waitQueueSize()、groups();
// 新设定分组、等待队列容量方式 DefaultStreamExcelBuilder excelBuilder = DefaultStreamExcelBuilder.of(CommonPeople.class) .start(100,CommonPeople.class); // 新设定分组、等待队列容量方式 DefaultStreamExcelBuilder excelBuilder = DefaultStreamExcelBuilder.of(CommonPeople.class) .groups(CommonPeople.class) .waitQueueSize(100) .start();
具体更新点如下:
1. 新增csv追加数据方式
CsvBuilder<CsvPeople> csvBuilder = CsvBuilder.of(People.class); for (int i = 0; i < 10; i++) { csvBuilder.append(data(1000)); } Csv csv = csvBuilder.build(); AttachmentExportUtil.export(csv.getFilePath(), "test.csv", response); // 该种方式会覆盖原append.csv文件 csv.write(Paths.get("/User/append.csv")); // 该种方式会在原append.csv文件继续追加数据,而不是覆盖 csv.write(Paths.get("/User/append.csv"),true);
2. 自定义高度(Bean形式)
@Data @FieldDefaults(level = AccessLevel.PRIVATE) @ExcelTable(sheetName = "人员信息", rowHeight = 50) public class CommonPeople { @ExcelColumn(title = "姓名", index = 0) String name; @ExcelColumn(title = "年龄", index = 1) Integer age; @ExcelColumn(title = "是否会跳舞", groups = CommonPeople.class, index = 2) boolean dance; @ExcelColumn(title = "金钱", decimalFormat = "#,000.00", index = 3) BigDecimal money; }
设定rowHeight即可。
3. 自定义高度(模板方式)
<% DIRECTIVE SAFE_OUTPUT_OPEN; %> <table> <caption>${sheetName}</caption> <thead> <tr style="background-color: #6495ED"> <th colspan="3" style="text-align: center;vertical-align: middle;font-weight: bold;font-size: 14px;">产品介绍</th> </tr> <tr> <% for(title in titles){ %> <th>${title}</th> <% } %> </tr> </thead> <% if(data!=null){ %> <tbody> <% for(item in data){ %> <tr style="height: 100px;"> <td>${item.category}</td> <td>${item.name}</td> <td>${item.count}</td> </tr> <% } %> </tbody> <% } %> </table> <% //关闭安全输出。 DIRECTIVE SAFE_OUTPUT_CLOSE; %>
设定高度样式 style="height: 100px;"即可。
4. 隔行样式设置
@ExcelColumn(order = 0, title = "姓名",style = {"title->color:red;","even->color:yellow;","odd->background-color:green;width:50"}) private String name;
odd、even对应奇偶行样式。
其余,请移步文档:https://github.com/liaochong/myexcel/wiki
欢迎大家使用,有任何问题可通过github issue提出,会尽量及时回复!!!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Ubuntu 19.10 Beta 发布,正式版本定于 10 月份
Canonical 已经发布了 Ubuntu19.10 桌面、服务器和云产品的测试版,代号为“EoanErmine”,该测试版不仅包括主要 Ubuntu 桌面、服务器和云产品的镜像,还包括 Kubuntu、Lubuntu、Ubuntu Budgie、UbuntuKylin、Ubuntu Mate、Ubuntu Studio 和 Xubuntu 等其他产品的镜像。 Ubuntu 19.10 Beta现在已经可以下载了,而正式版将于 10月 17日正式发布,19.10 Beta主要用于更广泛测试。内容如下: 基于Linux 5.3kernel 新主题Yaru GTK和新壁纸 GNOME 3.34 Ubuntu19.10 也将比以前的版本的启动更快 在 Intel 硬件上,它提供了一种“flicker-free boot”的体验 对于游戏玩家来说,将能够在 Ubuntu 19.10 上直接从安装程序安装 NVIDIA 驱动程序 下载地址:http://releases.ubuntu.com/19.10/ubuntu-19.10-beta-desktop-amd64.iso 发布说明| 图片来...
- 下一篇
DB4O 社区版 8.1.9 发布,Java Lambda 查询数据库
Db4o 是一个面向对象数据库,能对复杂的对象结构进行持久化,支持单用户模式,多用户模式。 这版本把 Java7-Java11的一些有用新指令补上,主要是为了编译 Java11 的 Lambda 语句, Lambda 在底层使用了新指令,这个版本的 Db4o 还是基于 Java7,以补丁方式编译 Lambda。在OpenJDK11 上测试通过。 Java Lambda 已经很多年了,支持Lambda查询数据库的类库还很少, 这里直接把 Lambda 放入到 Db4o 中,简单查询条件直接编译为数据库查询语句。 使用例子 初始化 public static class Detail { @Indexed public long type; public String memo; public Record record; } public static class Record { @Indexed public String name; public String noName; @Indexed public double indexField; pu...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- 2048小游戏-低调大师作品
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Mario游戏-低调大师作品
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS6,CentOS7官方镜像安装Oracle11G
- Docker使用Oracle官方镜像安装(12C,18C,19C)