Java ECC是一款轻量且高效的Excel读写工具
1、来源:https://gitee.com/wangguanquan/eec
2、pom
<dependency>
<groupId>org.ttzero</groupId>
<artifactId>eec</artifactId>
<version>0.5.12</version>
</dependency>
3、demo
List<User> list = new ArrayList<>(); User user1 = new User(); user1.setId(111L); user1.setName("aaa1"); list.add(user1); User user2 = new User(); user2.setId(222L); user2.setName("aaa2"); list.add(user2); User user3 = new User(); user3.setId(111L); user3.setName("aaa3"); list.add(user3); User user4 = new User(); user4.setId(444L); user4.setName("aaa4"); list.add(user4); Workbook wb = new Workbook("abc"); wb.addSheet(new ListSheet<>("abc", list)); wb.writeTo(Paths.get("e:/excel"));
4、结果

附1:读入到数组或列表:
try (ExcelReader reader = ExcelReader.read(Paths.get("./User.xlsx"))) { // 读取第1个Sheet页 List<User> users = reader.sheet(0) // 指定第6行为表头,前5行为概要信息 .header(6) // 读取数据行 .rows() // 将每行数据转换为User象 .map(row -> row.to(User.class)) // 收集为List或数组进行后续处理 .collect(Collectors.toList()); } catch (IOException e) { e.printStackTrace(); }
附2:支持多行表头(EEC使用多个ExcelColumn注解来实现多级表头,名称一样的行或列将自动合并)
public static class RepeatableEntry { @ExcelColumn("运单号") private String orderNo; @ExcelColumn("收件地址") @ExcelColumn("省") private String rProvince; @ExcelColumn("收件地址") @ExcelColumn("市") private String rCity; @ExcelColumn("收件地址") @ExcelColumn("详细地址") private String rDetail; @ExcelColumn("收件人") private String recipient; @ExcelColumn("寄件地址") @ExcelColumn("省") private String sProvince; @ExcelColumn("寄件地址") @ExcelColumn("市") private String sCity; @ExcelColumn("寄件地址") @ExcelColumn("详细地址") private String sDetail; @ExcelColumn("寄件人") private String sender; }

附3:多行表头读取(多级表头可以使用header方法来指定表头所在的多个行号)
reader.sheet(0) .header(1, 2) // <- 指定第1、2行均为表头 .map(Row::toMap) // <- Row 转 Map .forEach(System.out::println)
有些事情,没经历过不知道原理,没失败过不明白奥妙,没痛苦过不了解真谛。临渊羡鱼,不如退而结网!

浙公网安备 33010602011771号