解决问题:源码ReadSheet在同一个Map中获取对象不准确问题
PR:Fixed the issue where different ReadSheet objects could not get the correct value when comparing them.
一:问题场景
ReadSheet在同一个Map中获取对象不准确(如Map<ReadSheet, T> map)
二:分析原因
ReadSheet does not implement @EqualsAndHashCode
(ReadSheet 未实现equals和hashcode方法,但是在部分测试用例中是体现不出来的,具体可以看下面的测试用例,比较直观)
三:PR地址
PR交流链接
测试用例
@Testvoid testMapWithReadSheet() {ReadSheet sheet1 = new ReadSheet(1, "Sheet1");ReadSheet sheet2 = new ReadSheet(0, "Sheet2");Map<ReadSheet, String> map = new HashMap<>();map.put(sheet1, "sheet1 Value");//ReadSheet sheet3 = new ReadSheet(0, "Sheet2");map.put(sheet3, "sheet3 Value");String value = map.get(sheet2);System.out.println(value);}
四:扩展分享
看到Issue中很多提交的相关问题,故分享一下早前写过的例子.
Note:FastExcel完全兼容Easyexcel是比较友好的.(实现基本可以沿用)
1.导出excel冻结表头和冻结指定列并支持筛选器
【EasyExcel】导出excel冻结表头和冻结指定列并支持筛选器
2.导出excel-设置动态表头并导出数据
【EasyExcel】导出excel-设置动态表头并导出数据
3.【EasyExcel】导出excel并支持自定义设置数据行背景颜色等
【EasyExcel】导出excel并支持自定义设置数据行背景颜色等
最后:
什么是 FastExcel
FastExcel 坚持免费开源,并采用商业友好的 Apache 协议,使其适用于任何商业化场景。这为开发者和企业提供了极大的自由度和灵活性。其一些显著特点包括:
完全兼容原 EasyExcel 的所有功能和特性,这使得用户可以无缝过渡。
从 EasyExcel 迁移到 FastExcel 只需简单地更换包名和 Maven 依赖即可完成升级。
在功能上,比 EasyExcel 提供更多新的特性和改进。
主要特性
- 高性能读写:FastExcel 专注于性能优化,能够高效处理大规模的 Excel 数据。相比一些传统的 Excel 处理库,它能显著降低内存占用。
- 简单易用:该库提供了简洁直观的 API,使得开发者可以轻松集成到项目中,无论是简单的 Excel 操作还是复杂的数据处理都能快速上手。
- 流式操作:FastExcel 支持流式读取,将一次性加载大量数据的问题降到最低。这种设计方式在处理数十万甚至上百万行的数据时尤为重要。
具体可访问:FastExcel