❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦
原文链接:https://mp.weixin.qq.com/s/FmBvQghJzV9Mj3I8wsBp1w
🚀 快速阅读
- 性能:FastExcel 专注于高性能读写,显著降低内存占用。
- 功能:支持流式操作、读取指定行数和 Excel 转 PDF 等功能。
- 兼容性:完全兼容 EasyExcel,API 一致,可无缝迁移。
正文(附运行示例)
FastExcel 是什么
FastExcel 是一款基于 Java 的开源库,旨在提供快速、简洁且能解决大文件内存溢出问题的 Excel 处理工具。它兼容 EasyExcel,提供性能优化、bug 修复,并新增了如读取指定行数和将 Excel 转换为 PDF 的功能。
FastExcel 以 MIT 协议发布,适用于任何商业场景。其高性能读写、简单易用的 API 和流式操作能力,使其特别适合处理大规模数据。FastExcel 支持无缝从 EasyExcel 迁移,极大地简化了 Excel 文件的读写操作,提升了开发效率。
FastExcel 的主要功能
- 高性能读写:FastExcel 专注于性能优化,能高效处理大规模 Excel 数据,显著降低内存占用。
- 简单易用:提供简洁直观的 API,易于集成和使用。
- 流式操作:支持流式读取,减少一次性加载大量数据的问题。
- 读取指定行数:可以根据需求,只读取感兴趣的部分数据,提高数据处理效率。
- Excel 转换为 PDF:支持直接将 Excel 文件转换为 PDF,满足多样化的文档输出需求。
FastExcel 的技术原理
- 内存优化:基于流式读取技术,不需要一次性将整个 Excel 文件加载到内存中,逐行或逐块读取数据。
- 事件驱动模型:基于实现
ReadListener
接口处理读取操作。当读取到数据时,会触发接口中的方法,如invoke
方法,支持开发者对每行数据进行即时处理。 - 注解映射:用注解将 Excel 文件中的列与 Java 对象的属性进行映射。开发者能轻松地将 Excel 数据转换为 Java 对象,同时也支持反向操作,将 Java 对象写入 Excel。
如何运行 FastExcel
读取 Excel 文件
// 实现 ReadListener 接口,设置读取数据的操作
public class DemoDataListener implements ReadListener<DemoData> {
@Override
public void invoke(DemoData data, AnalysisContext context) {
System.out.println("解析到一条数据" + JSON.toJSONString(data));
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
System.out.println("所有数据解析完成!");
}
}
public static void main(String[] args) {
String fileName = "demo.xlsx";
// 读取 Excel 文件
FastExcel.read(fileName, DemoData.class, new DemoDataListener()).sheet().doRead();
}
创建 Excel 文件
// 示例数据类
public class DemoData {
@ExcelProperty("字符串标题")
private String string;
@ExcelProperty("日期标题")
private Date date;
@ExcelProperty("数字标题")
private Double doubleData;
@ExcelIgnore
private String ignore;
}
// 填充要写入的数据
private static List<DemoData> data() {
List<DemoData> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
DemoData data = new DemoData();
data.setString("字符串" + i);
data.setDate(new Date());
data.setDoubleData(0.56);
list.add(data);
}
return list;
}
public static void main(String[] args) {
String fileName = "demo.xlsx";
// 创建一个名为“模板”的 sheet 页,并写入数据
FastExcel.write(fileName, DemoData.class).sheet("模板").doWrite(data());
}
资源
❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦