工具介绍
1、使用Alibaba 的Easy Excel工具来进行
2、项目地址 GitHub EasyExcel
3、官方文档 EasyExcel
创建好一个SpringBoot项目
1、可以用SpringBoot Initializer 来创建
2、也可以创建一个Maven项目添加依赖
添加EasyExcel依赖
1、这点对小白不太友好,不知道要添加什么依赖
1 2 3 4 5 6 7
| <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.10</version> </dependency>
|
准备一张Excel表

写代码
Bean、Service、Mapper一条龙
做个User示例
Javabean
1 2 3 4 5 6 7 8 9 10
| @Data public class User { private Integer id; @ExcelProperty("姓名") private String name;
@ExcelProperty("创建时间") private Date createDate; }
|
Service
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| @Service @AllArgsConstructor public class UserServiceImpl implements UserService {
private final UserMapper userMapper;
@Override public int save(List<User> list) {
int sum = 0; for (User user : list) { sum += userMapper.save(user); } return sum; } }
|
Mapper
1 2 3 4
| @Mapper public interface UserMapper { int save(User user); }
|
测试类
Listener
Listener中主要是完成对这个读取到的数据进行操作的,这个地方直接复制的官方Demo中的。
这个需要修改的地方有
- 要将Bean换成自己的
- Mapper或Service是否是自动注入,如果是的话,要将这块教给Spring管理
注意:Mapper和Service要是自动注入的话,这个Listener也需要交给Spring进行管理,可以写在配置类中,也可以写一个Controller等注解交给Spring进行管理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| @Controller public class UserListener extends AnalysisEventListener<User> { private static final Logger LOGGER = LoggerFactory.getLogger(UserListener.class);
private static final int BATCH_COUNT = 5; List<User> list = new ArrayList<>();
@Resource private UserService userService;
@Override public void invoke(User data, AnalysisContext context) { LOGGER.info("解析到一条数据:{}", JSON.toJSONString(data)); list.add(data); if (list.size() >= BATCH_COUNT) { saveData(); list.clear(); } }
@Override public void doAfterAllAnalysed(AnalysisContext context) { saveData(); LOGGER.info("所有数据解析完成!"); }
private void saveData() { LOGGER.info("{}条数据,开始存储数据库!", list.size()); userService.save(list); LOGGER.info("存储数据库成功!"); } }
|
测试类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| @SpringBootTest public class WriteTest { @Autowired private UserListener userListener;
@Test public void simpleRead() {
String fileName = "用户.xlsx"; ExcelReader excelReader = null; try { excelReader = EasyExcel.read(fileName, User.class, userListener).build(); ReadSheet readSheet = EasyExcel.readSheet(0).build(); excelReader.read(readSheet); } finally { if (excelReader != null) { excelReader.finish(); } } } }
|
执行测试
看到日志系统打印出来就成功了

数据库查看

注意:解析到的数据存储到数据库的方式由Mapper的实现决定