批量导出
1. 导出按钮
<el-button class="user-btn" type="primary" @click="exp()">批量导出</elbutton>
exp(){
location.href='http://localhost:8080/api/user/exp'
}
2. 引入依赖
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
3. 后端导出表格接⼝
@GetMapping("/exp")
public Result exp(HttpServletResponse response) throws IOException {
List<User> users = userService.selectAll("", "");
封装
List<Map<String,Object>> list = new ArrayList<>();
for (User user : users) {
Map<String, Object> map = new HashMap<>();
map.put("姓名", user.getName());
map.put("电话", user.getPhone());
map.put("⽤户类型", user.getType());
list.add(map);
}
ExcelWriter writer = ExcelUtil.getWriter(true);
writer.write(list, true);
response.setContentType("application/vnd.openxmlformats-officedocumen
t.spreadsheetml.sheet;charset=utf-8");
response.setHeader("Content-Disposition","attachment;filename=test.xls
x");
ServletOutputStream outputStream = response.getOutputStream();
writer.flush(outputStream,true);
writer.close();
IoUtil.close(System.out);
return Result.success();
}
批量导⼊
1. 导⼊按钮
<!-- ⽂件上传/批量导⼊ -->
<el-upload action="http://localhost:8080/api/user/upload" :show-fil
e-list="false" :on-success="successUpload" style="display:inline-block;">
<el-button class="user-btn" type="primary">批量导⼊</el-button>
</el-upload>
successUpload(res) {
if(res.code==='0'){
this.$message.success('批量导⼊成功')
this.selectAll()
}else{
this.$message.error(res.msg)
}
}
2. 实体类添加导⼊映射注解
@Alias("姓名")
private String name;
@Alias("账户")
private String username;
3. 后端表格导⼊接⼝
@PostMapping("/upload")
public Result upload(MultipartFile file) throws IOException {
List<User> users = ExcelUtil.getReader(file.getInputStream()).readAll(
User.class);
if (!CollectionUtil.isEmpty(users)) {
for (User user : users) {
try {
userService.add(user);
} catch (Exception e) {
e.printStackTrace();
}
}
}
return Result.success();
}