搭建网站空间,东莞做网站软件,建立网站策划书,歌词插件wordpress简介
FastExcel是由原EasyExcel作者在阿里巴巴宣布停止维护EasyExcel之后推出的升级版框架。它继承了EasyExcel的所有优点#xff0c;并且在性能和功能上进行了显著的提升和创新。
FastExcel的特点
高性能读写#xff1a;FastExcel专注于性能优化#xff0c;能够高效处理…简介
FastExcel是由原EasyExcel作者在阿里巴巴宣布停止维护EasyExcel之后推出的升级版框架。它继承了EasyExcel的所有优点并且在性能和功能上进行了显著的提升和创新。
FastExcel的特点
高性能读写FastExcel专注于性能优化能够高效处理大规模的Excel数据显著降低内存占用。简单易用提供了简洁直观的API使得开发者可以轻松集成到项目中无论是简单的Excel操作还是复杂的数据处理都能快速上手。流式操作支持流式读取将一次性加载大量数据的问题降到最低特别适合处理数十万甚至上百万行的数据。完全兼容完全兼容原EasyExcel的所有功能和特性用户可以无缝过渡。持续更新FastExcel会持续更新修复bug优化性能增加新功能。
FastExcel使用方法详解
创建实体类和监听器
创建实体类
在使用FastExcel进行Excel文件的读写操作之前需要定义一个实体类该类中的每个属性对应Excel中的一列。使用ExcelProperty注解来指定列名。
/*** author 作者TesterRoad* time 创建时间2024* desc 公众号测试工程师成长之路*/import cn.idev.excel.annotation.ExcelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;Setter
Getter
ToString
public class User {ExcelProperty(编号)private Integer id;ExcelProperty(名字)private String name;ExcelProperty(年龄)private Integer age;
}创建事件监听器
FastExcel通过事件监听器实现Excel文件的逐行读取这对于处理大文件尤为重要因为它可以避免内存溢出的问题。下面是一个事件监听器的示例它在读取每行数据时将数据添加到列表中并在所有数据读取完成后执行一些操作。
/*** author 作者TesterRoad* time 创建时间2024* desc 公众号测试工程师成长之路*/import cn.idev.excel.context.AnalysisContext;
import cn.idev.excel.event.AnalysisEventListener;
import java.util.ArrayList;
import java.util.List;public class BaseExcelListenerT extends AnalysisEventListenerT {private ListT dataList new ArrayList();Overridepublic void invoke(T t, AnalysisContext analysisContext) {dataList.add(t);}Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext) {System.out.println(读取完成共读取了 dataList.size() 条数据);}public ListT getDataList() {return dataList;}
}
实现写入和读取功能
Excel写入功能
以下是使用FastExcel进行Excel写入的示例代码。首先创建测试数据然后通过FastExcel.write方法将数据写入到Excel文件中。
/*** author 作者TesterRoad* time 创建时间2024* desc 公众号测试工程师成长之路*/// Excel写入功能
GetMapping(/download)
public void download(HttpServletResponse response) throws IOException {response.setContentType(application/vnd.openxmlformats-officedocument.spreadsheetml.sheet);response.setCharacterEncoding(utf-8);String fileName URLEncoder.encode(test, UTF-8);response.setHeader(Content-disposition,attachment;filename*utf-8 fileName .xlsx);// 写入数据FastExcel.write(response.getOutputStream(), User.class).sheet(模板).doWrite(buildData());
}// 创建测试数据
private ListUser buildData() {User user1 new User();user1.setId(1);user1.setName(张三);user1.setAge(18);User user2 new User();user2.setId(2);user2.setName(李四);user2.setAge(19);return List.of(user1, user2);
}
Excel读取功能
以下是使用FastExcel进行Excel读取的示例代码。通过FastExcel.read方法读取Excel文件并使用之前创建的监听器来处理读取到的数据。
/*** author 作者TesterRoad* time 创建时间2024* desc 公众号测试工程师成长之路*/// Excel读取功能
PostMapping(/upload)
public ResponseEntityString upload(RequestParam(file) MultipartFile file) {if (file.isEmpty()) {return ResponseEntity.badRequest().body(请选择一个文件上传);}try {BaseExcelListenerUser baseExcelListener new BaseExcelListener();FastExcel.read(file.getInputStream(), User.class, baseExcelListener).sheet().doRead();ListUser dataList baseExcelListener.getDataList();System.out.println(dataList);return ResponseEntity.ok(文件上传并处理成功);} catch (IOException e) {return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(文件处理失败);}
}
Excel转换为PDF
FastExcel还支持将Excel文件转换为PDF文件这一功能底层依赖于Apache POI和itext-pdf。请注意使用itext-pdf时需要确保符合其许可证要求。
FastExcel.convertToPdf(new File(excelFile),new File(pdfFile),null,null);小结
FastExcel作为一个高效且易于使用的Excel处理工具不仅继承了EasyExcel的所有优点还在此基础上进行了性能和功能的增强。通过上述示例我们可以看到FastExcel如何简化Excel文件的读写操作以及如何通过事件监听器实现流式处理从而有效管理内存使用。无论是企业数据导入导出还是个人项目开发FastExcel都能提供强大的支持。
FastExcel与EasyExcel的区别
性能提升FastExcel在性能上比EasyExcel更好更稳定。API一致性FastExcel与EasyExcel的API完全一致可以无缝切换。功能增加FastExcel 1.0.0版本新增了读取Excel指定行数和将Excel转换为PDF的功能。
结论
FastExcel作为一个轻量级但功能强大的Java库专为需要高性能和低内存占用的Excel文件处理而设计。如果您的项目需要处理大规模的Excel数据FastExcel无疑是一个值得考虑的选择。其流式处理和灵活的API使其成为处理Excel文件的理想工具。 来源https://juejin.cn/post/7451871895753326626