1、在配置好mybatis-plus的前提下
2、配置hutool工具
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
2、在service服务层编写方法
public List<User> importUser(MultipartFile file) throws Exception {
InputStream inputStream = file.getInputStream();
ExcelReader excelReader = ExcelUtil.getReader(inputStream);
// 指定User对象去接收它;
// 自定义列名标题
// writer.addHeaderAlias("ID","id");
excelReader.addHeaderAlias("用户名","name");
excelReader.addHeaderAlias("密码","password");
excelReader.addHeaderAlias("角色","role");
excelReader.addHeaderAlias("创建时间","createTime");
// 一次性写出list内的对象到excel,使用默认样式强制输出标题
System.out.println(inputStream+"_________________");
List<User> users =excelReader.readAll(User.class);
// List user1 = excelReader.readAll();
System.out.println(users);
// return userService.saveBatch(user);
return users;
}
public void export(HttpServletResponse response) throws Exception {
// 从数据库中查询出所有的数据
List<User> list = list();
// 通过工具类创建writer 写出到磁盘路径
// ExcelWriter writer = ExcelUtil.getWriter("d:/writeBeanTest.xlsx");
// ExcelWriter writer = ExcelUtil.getWriter(fileUploadPath+ "/用户信息.xlsx");
// 内存操作写出到浏览器
ExcelWriter writer = ExcelUtil.getWriter(true);
// 自定义列名标题
writer.addHeaderAlias("id","ID");
writer.addHeaderAlias("name","用户名");
writer.addHeaderAlias("password","密码");
writer.addHeaderAlias("role","角色");
writer.addHeaderAlias("createTime","创建时间");
// writer.addHeaderAlias("name","用户名");
// 一次性写出list内的对象到excel,使用默认样式强制输出标题
writer.write(list,true);
// 设置浏览器响应的格式
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
String fileName = URLEncoder.encode("用户信息","Utf8");
response.setHeader("Content-Disposition","attachment;filename="+ fileName + ".xlsx");
ServletOutputStream outputStream = response.getOutputStream();
writer.flush(outputStream,true);
outputStream.close();
// 关闭writer,释放内存
writer.close();
}
}
3、controller控制层应用
// 导出接口
@GetMapping("/export")
public void export(HttpServletResponse response) throws Exception {
userService.export(response);
}
// 导入接口
@PostMapping("/import")
public Boolean importUser(MultipartFile file) throws Exception {
InputStream inputStream = file.getInputStream();
List<User> users = userService.importUser(file);
return userService.saveBatch(users);
}
4、Vue 前端按钮配置
<el-button type="primary" icon="el-icon-upload2" size="small" style="margin-left: 5px"
@click="exp">导出
</el-button>
<el-upload action="http://localhost:9090/uer/importUser" style="display:inline-block">
<el-button size="small" type="primary" style="margin-left: 5px"
icon="el-icon-download">导入
</el-button>
</el-upload>
5、配置导出点击后的方法
exp(){
window.open('http://localhost:9090/user/export');
}