读取方法

示例表格

姓名 年龄 性别
张三 20
李芳 18

base:
创立对象使用easyExcel创建对象方式,如:

  1. @Data
  2. public class TestThreeEntity {
  3. @ExcelProperty("姓名")
  4. private String name;
  5. @ExcelProperty("年龄")
  6. private String age;
  7. @ExcelProperty("性别")
  8. private String sex;
  9. }

1.简单读取

  1. public class TestDemo {
  2. public static void main(String[] args) {
  3. /**
  4. * 创建Excel监听器
  5. */
  6. BaseExcelListener<TestThreeEntity> listener = new BaseExcelListener<>();
  7. /**
  8. * 创建ExcelConfig对象
  9. */
  10. ExcelConfig excelConfig = new ExcelConfig();
  11. /**
  12. * 读取方式1,2,3选择一种即可
  13. */
  14. //1.filePath为使用文件绝对路径进行读取
  15. excelConfig.setFilePath("/Users/test/Desktop/123.xlsx");
  16. //2.file为使用文件对象进行读取
  17. File file = new File("/Users/test/Desktop/123.xlsx");
  18. excelConfig.setFile(file);
  19. //3.inputStream为使用文件流方式进行读取
  20. FileInputStream inputStream = new FileInputStream(file);
  21. excelConfig.setInputStream(inputStream);
  22. /**
  23. * 指定读取excel的对象class
  24. */
  25. excelConfig.setClazz(TestThreeEntity.class);
  26. /**
  27. * 填入监听器
  28. */
  29. excelConfig.setListener(listener);
  30. /**
  31. * 创建读取工具对象
  32. */
  33. BaseExcelUtils<TestThreeEntity> utils = new BaseExcelUtils<>();
  34. /**
  35. * 调用readExcel方法传入ExcelConfig对象
  36. */
  37. List<TestThreeEntity> testTwoEntities = utils.readExcel(excelConfig);
  38. System.err.println(testTwoEntities.size());
  39. for (TestThreeEntity item : testTwoEntities) {
  40. System.err.println(item);
  41. }
  42. }
  43. }

结果:
TestThreeEntity(name=张三, age=20, sex=男)
TestThreeEntity(name=李芳, age=18, sex=女)
2.增加过滤引擎

  1. public class MyExcelFilter extends BaseExcelFilter<TestEntity> {
  2. @Override
  3. public ExcelResult filter(TestEntity testEntity) {
  4. if(testEntity.getAge()==20){
  5. return ExcelResult.fail();
  6. }
  7. return ExcelResult.success();
  8. }
  9. }
  1. public class TestDemo {
  2. public static void main(String[] args) {
  3. /**
  4. * 创建Excel监听器
  5. */
  6. BaseExcelListener<TestThreeEntity> listener = new BaseExcelListener<>();
  7. /**
  8. * 创建自定义过滤引擎
  9. */
  10. MyExcelFilter filter = new MyExcelFilter();
  11. /**
  12. * 创建ExcelConfig对象
  13. */
  14. ExcelConfig excelConfig = new ExcelConfig();
  15. /**
  16. * 读取方式1,2,3选择一种即可
  17. */
  18. //1.filePath为使用文件绝对路径进行读取
  19. excelConfig.setFilePath("/Users/test/Desktop/123.xlsx");
  20. //2.file为使用文件对象进行读取
  21. File file = new File("/Users/test/Desktop/123.xlsx");
  22. excelConfig.setFile(file);
  23. //3.inputStream为使用文件流方式进行读取
  24. FileInputStream inputStream = new FileInputStream(file);
  25. excelConfig.setInputStream(inputStream);
  26. /**
  27. * 指定读取excel的对象class
  28. */
  29. excelConfig.setClazz(TestThreeEntity.class);
  30. /**
  31. * 填入监听器
  32. */
  33. excelConfig.setListener(listener);
  34. /**
  35. * 填入过滤引擎
  36. */
  37. excelConfig.setFilter(filter);
  38. /**
  39. * 创建读取工具对象
  40. */
  41. BaseExcelUtils<TestThreeEntity> utils = new BaseExcelUtils<>();
  42. /**
  43. * 调用readExcel方法传入ExcelConfig对象
  44. */
  45. List<TestThreeEntity> testTwoEntities = utils.readExcel(excelConfig);
  46. System.err.println(testTwoEntities.size());
  47. for (TestThreeEntity item : testTwoEntities) {
  48. System.err.println(item);
  49. }
  50. }
  51. }

结果:
TestThreeEntity(name=李芳, age=18, sex=女)

3.添加存储引擎

  1. public class MyExcelSave extends BaseExcelSave<TestEntity> {
  2. @Autowired
  3. private UserMapper userMapper;
  4. @Override
  5. public ExcelResult saveData(List<TestEntity> testEntity) {
  6. for(TestEntity item : testEntity)
  7. int size = userMapper.insert(testEntity);
  8. if(size>1){
  9. return ExcelResult.success();
  10. }
  11. return ExcelResult.fail();
  12. }
  13. }
  1. public class TestDemo {
  2. public static void main(String[] args) {
  3. /**
  4. * 创建Excel监听器
  5. */
  6. BaseExcelListener<TestThreeEntity> listener = new BaseExcelListener<>();
  7. /**
  8. * 创建自定义过滤引擎
  9. */
  10. MyExcelSave save = new MyExcelSave();
  11. /**
  12. * 创建ExcelConfig对象
  13. */
  14. ExcelConfig excelConfig = new ExcelConfig();
  15. /**
  16. * 读取方式1,2,3选择一种即可
  17. */
  18. //1.filePath为使用文件绝对路径进行读取
  19. excelConfig.setFilePath("/Users/test/Desktop/123.xlsx");
  20. //2.file为使用文件对象进行读取
  21. File file = new File("/Users/test/Desktop/123.xlsx");
  22. excelConfig.setFile(file);
  23. //3.inputStream为使用文件流方式进行读取
  24. FileInputStream inputStream = new FileInputStream(file);
  25. excelConfig.setInputStream(inputStream);
  26. /**
  27. * 指定读取excel的对象class
  28. */
  29. excelConfig.setClazz(TestThreeEntity.class);
  30. /**
  31. * 填入监听器
  32. */
  33. excelConfig.setListener(listener);
  34. /**
  35. * 填入过滤引擎
  36. */
  37. excelConfig.setSave(save);
  38. /**
  39. * 创建读取工具对象
  40. */
  41. BaseExcelUtils<TestThreeEntity> utils = new BaseExcelUtils<>();
  42. /**
  43. * 调用readExcel方法传入ExcelConfig对象
  44. */
  45. List<TestThreeEntity> testTwoEntities = utils.readExcel(excelConfig);
  46. System.err.println(testTwoEntities.size());
  47. for (TestThreeEntity item : testTwoEntities) {
  48. System.err.println(item);
  49. }
  50. }
  51. }

写入方法
1.导出到磁盘

public class TestDemo {
    public static void main(String[] args) {
        List list = new ArrayList<TestThreeEntity>();
        BaseExcelUtils<TestThreeEntity> utils = new BaseExcelUtils<>();
        //1.存储路径,2.文件名,3.class对象,4.数据
        utils.writeExcel("/test/test/","file.xlsx",TestThreeEntity.class,list);
    }
}

2.IO流导出

public class TestDemo {
    public static void main(String[] args) {
       List list = new ArrayList<TestThreeEntity>();
       BaseExcelUtils<TestThreeEntity> utils = new BaseExcelUtils<>();
       utils.writeExcel(response,"file.xlsx",TestThreeEntity.class,list);
    }
}