导入分为一般导入、sax导入,二者的区别在于sax导入更关注内存,内存使用更少,其他二者接口是一致的,建议使用sax方式导入(可读取公式值)

1. 一般导入(不支持csv文件导入)

  1. URL htmlToExcelEampleURL = this.getClass().getResource("/templates/read_example.xlsx");
  2. Path path = Paths.get(htmlToExcelEampleURL.toURI());
  3.  
  4. // 方式一:全部读取后处理
  5. List<ArtCrowd> result = DefaultExcelReader.of(ArtCrowd.class)
  6. .sheet(0) // 0代表第一个,如果为0,可省略该操作,也可sheet("名称")读取
  7. .rowFilter(row -> row.getRowNum() > 0) // 如无需过滤,可省略该操作,0代表第一行
  8. .beanFilter(ArtCrowd::isDance) // bean过滤
  9. .read(path.toFile());// 可接收inputStream
  10.  
  11. // 方式二:读取一行处理一行,可自行决定终止条件
  12. // readThen有两种重写接口,返回Boolean型接口允许在返回False情况下直接终止读取
  13. DefaultExcelReader.of(ArtCrowd.class)
  14. .sheet(0) // 0代表第一个,如果为0,可省略该操作,也可sheet("名称")读取
  15. .rowFilter(row -> row.getRowNum() > 0) // 如无需过滤,可省略该操作,0代表第一行
  16. .beanFilter(ArtCrowd::isDance) // bean过滤
  17. .readThen(path.toFile() ,artCrowd -> {System.out.println(artCrowd.getName);});// 可接收inputStream
  18.  
  19. public class ArtCrowd {
  20. // index代表列索引,从0开始
  21. @ExcelColumn(index = 0)
  22. private String name;
  23.  
  24. @ExcelColumn(index = 1)
  25. private String age;
  26.  
  27. @ExcelColumn(index = 2,dateFormatPattern="yyyy-MM-dd")
  28. private Date birthday;
  29. }

2.SAX导入(支持csv文件导入)

csv文件导入接口与导入excel接口一致,仅传入文件不同,程序会自动区分,建议使用File方式导入

  1. URL htmlToExcelEampleURL = this.getClass().getResource("/templates/read_example.xlsx");
  2. Path path = Paths.get(htmlToExcelEampleURL.toURI());
  3.  
  4. // 方式一:全部读取后处理,SAX模式,避免OOM,建议大量数据使用
  5. List<ArtCrowd> result = SaxExcelReader.of(ArtCrowd.class)
  6. .sheet(0) // 0代表第一个,如果为0,可省略该操作,也可sheet("名称")读取
  7. .rowFilter(row -> row.getRowNum() > 0) // 如无需过滤,可省略该操作,0代表第一行
  8. .beanFilter(ArtCrowd::isDance) // bean过滤
  9. .read(path.toFile());// 可接收inputStream
  10.  
  11. // 方式二:读取一行处理一行,可自行决定终止条件,SAX模式,避免OOM,建议大量数据使用
  12. // readThen有两种重写接口,返回Boolean型接口允许在返回False情况下直接终止读取
  13. SaxExcelReader.of(ArtCrowd.class)
  14. .sheet(0) // 0代表第一个,如果为0,可省略该操作,也可sheet("名称")读取
  15. .rowFilter(row -> row.getRowNum() > 0) // 如无需过滤,可省略该操作,0代表第一行
  16. .beanFilter(ArtCrowd::isDance) // bean过滤
  17. .readThen(path.toFile() ,artCrowd -> {System.out.println(artCrowd.getName);});// 可接收inputStream
  18.  
  19. public class ArtCrowd {
  20. // index代表列索引,从0开始
  21. @ExcelColumn(index = 0)
  22. private String name;
  23.  
  24. @ExcelColumn(index = 1)
  25. private String age;
  26.  
  27. @ExcelColumn(index = 2,dateFormatPattern="yyyy-MM-dd")
  28. private Date birthday;
  29. }

导入必须使用注解: @ExcelColumn(index,dateFormatPattern)

对应注解详情请见:注解

操作API请参见 API