部标平台软件网站开发,深圳住房和建设局网站哪里预约,家装网上怎么接单啊,惠州网站建设系统文章目录 一、EasyExcel的示例导入依赖创建实体类数据导入和导出 二、EasyExcel的作用三、EasyExcel的注解 EasyExcel是一个阿里巴巴开源的excel处理框架#xff0c;它以使用简单、节省内存著称。在解析Excel时#xff0c;EasyExcel没有将文件数据一次性全部加载到内存中它以使用简单、节省内存著称。在解析Excel时EasyExcel没有将文件数据一次性全部加载到内存中而是从磁盘上一行行读取数据逐个解析。这种一行一行的解析模式使得EasyExcel在处理大数据量的Excel文件时性能非常高效。 本文先展示示例后对EasyExcel做些简单介绍。 一、EasyExcel的示例
本文简单介绍EasyExcel的使用使用xlsx文件读入。
导入依赖
dependencygroupIdcom.alibaba/groupIdartifactIdeasyexcel/artifactIdversion3.3.1/version
/dependency
dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.20/version
/dependency创建实体类
Data
// 行高
HeadRowHeight(15)
// 行宽
ColumnWidth(20)
public class ExcelEntity implements Serializable {// ExcelProperty(index 0, value data) 列顺序ExcelProperty(用户姓名)private Integer name;// ExcelIgnore 不生效ExcelProperty(用户工号)private String userId;ExcelProperty(用户权限)private String role;ExcelProperty(用户部门)private Integer part;}数据导入和导出
实现一个数据例子将Excel文件中初始sheet所有用户部门的人员进行分类导出到原Excel的调整sheet。这个例子是读取一个Excel的sheet表格 首先创建Excel表格新建一个origin的sheet。新建一个Listener监听器用于逐行读取数据。
public class TestDataListener extends AnalysisEventListenerTestExcelEntity{private ListTestExcelEntity list new ArrayList();Overridepublic void invoke(TestExcelEntity data, AnalysisContext context) {System.out.println(data); // 可以看到每一行的数据list.add(data);}Overridepublic void doAfterAllAnalysed(AnalysisContext context) {System.out.println(WriterExcelEntity All data analyzed);}public ListTestExcelEntity getList() {return list;}public void setList(ListTestExcelEntity list) {this.list list;}
}新建执行代码
public class Test {public static void main(String[] args) throws FileNotFoundException {// 利用监听器读取Excel文件TestDataListener testDataListener new TestDataListener();String path C:\\Users\\Desktop\\test.xlsx;ExcelReader excelReader EasyExcel.read(path, TestExcelEntity.class, testDataListener).build();ReadSheet esgReadSheet EasyExcel.readSheet(0, origin).build();excelReader.read(esgReadSheet);excelReader.finish();ListTestExcelEntity greenBondEntities testDataListener.getList();// 对获取到的数据进行排序并转换成 Map 数据格式greenBondEntities.sort((u1, u2) - u1.getRole().compareTo(u2.getRole()));MapString, ListTestExcelEntity map greenBondEntities.stream().collect(Collectors.groupingBy(TestExcelEntity::getRole));// 根据业务操作ListTestExcelEntity res new ArrayList();map.entrySet().stream().forEach(entry - {ListTestExcelEntity list entry.getValue();for (int i 0; i list.size(); i) {TestExcelEntity test new TestExcelEntity();if (i 0) {test.setRole(list.get(i).getRole());test.setName(list.get(i).getName());test.setUserId(list.get(i).getUserId());test.setPart(list.get(i).getPart());} else {test.setName(list.get(i).getName());test.setUserId(list.get(i).getUserId());test.setPart(list.get(i).getPart());}res.add(test);}});EasyExcel.write(C:\\Users\\Desktop\\res.xlsx, TestExcelEntity.class).sheet(0,update).doWrite(res);}
} 导出后的Excel如下图所示 如果想要读取多个sheet表格
// 读取多条sheet
Test
public void read() {TestDataListener testDataListener new TestDataListener();String path C:\\Users\\Desktop\\test.xlsx;ExcelReader excelReader EasyExcel.read(path, TestExcelEntity.class, testDataListener).build();ListReadSheet sheets excelReader.excelExecutor().sheetList();for (ReadSheet sheet : sheets) {String sheetName sheet.getSheetName();System.out.println(sheetName);ReadSheet readSheet EasyExcel.readSheet(sheetName).build();excelReader.read(readSheet);}excelReader.finish();
}二、EasyExcel的作用
高效性能 EasyExcel在处理大型Excel文件时具有出色的性能。它采用了基于流的读写方式能够快速处理大量数据显著提高了读写效率。同时EasyExcel针对大数据量处理进行了优化提供了 分批读写 、内存优化 等策略保证了处理大型Excel文件时的 高效性 和 稳定性 。简洁易用 EasyExcel提供了简洁而强大的API可以轻松地读取、写入和操作Excel文件减少了繁琐的操作和代码量。低内存占用 与传统的Excel文件读取方式相比EasyExcel显著降低了内存占用。它采用基于 事件驱动 的模型通过 回调函数 来处理每一行数据而不是一次性将整个文件读入内存。这种流式的处理方式极大地节省了内存资源使得处理大文件时更加稳定可靠。支持多种格式和复杂操作 EasyExcel支持多种Excel文件格式包括 .xls 、.xlsx 、.xlsm 等使得它在处理不同版本的Excel文件时具有更大的灵活性。同时它还支持处理复杂的Excel表格包括合并单元格、样式、图表等满足各种复杂场景的需求。强大的扩展性 EasyExcel提供了丰富的扩展接口开发者可以根据自己的需求轻松定制Excel文件的读写操作满足各种复杂场景的需求。比如支持自定义转换器使得数据格式的处理更为灵活。
EasyExcel在处理Excel文件时具有高效、简洁、低内存占用、支持多种格式和复杂操作以及强大的扩展性等优点这使得它在 大数据量 的Excel操作场景下成为一个非常不错的选择。然而也需要注意到虽然EasyExcel有很多优点但它可能还需要额外引入依赖包这可能会增加项目的复杂度。因此在选择是否使用EasyExcel时需要综合考虑项目的具体需求和实际情况。
三、EasyExcel的注解
ExcelProperty 这是用于指定Java对象中的字段与Excel表格中的 列的映射关系 的注解。通过设置该注解的 value 属性可以指定列名。设置 index 属性可以指定列名的序号从而实现字段与列的对应关系。ExcelIgnore 这个注解用于指定Java对象中的字段在Excel中的读写操作中被忽略。当需要在Excel文件中忽略某个字段时可以在该字段上添加此注解。ContentFontStyle 用于设置字体样式。ContentLoopMerge 用于合并单元格。ContentRowHeight 用于设置 行高 。ContentStyle 用于设置内容格式。HeadFontStyle 用于定制标题字体格式。HeadRowHeight 用于设置 标题行行高 。HeadStyle 用于设置标题样式。ColumnWidth 用于设置 列宽 。DateTimeFormat 日期格式化。NumberFormat 数字格式化。