这里使用EasyExcel阿里巴巴开源的一个excel处理框架,EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。
- pom.xml导入依赖
<!-- easyexcel--> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>3.0.5</version> </dependency> </dependencies>
- 创建实体类User,@ExcelProperty 注解是EasyExcel框架提供的注解之一,用于指定Excel中的列索引或列名。
- 在Controller中使用 EasyExcel 做简单的导出
//文件导出
@GetMapping("/export")
public void exportFile(HttpServletResponse response) throws IOException {
// 获取用户数据
List<User> users = userService.userSelect();
// 指定内容类型为 Excel 文件(.xlsx 格式)
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
// 对文件名进行 URL 编码
String encodedFilename = URLEncoder.encode("用户信息.xlsx", "UTF-8");
//attachment: 这个值指示浏览器将响应内容处理为文件下载
response.setHeader("Content-Disposition", "attachment;filename*=utf-8''" + encodedFilename);
// 获取响应的输出流
OutputStream outputStream = response.getOutputStream();
// 使用 EasyExcel 直接写入响应输出流
EasyExcel.write(outputStream, User.class).sheet("用户信息").doWrite(users);
}
- 在Controller中使用EasyExcel做简单的导入
//文件导入
@PostMapping("/import")
public void imports(MultipartFile file) throws IOException {
//通过MultipartFile对象file获取文件内容的输入流
//使用getInputStream()方法获取文件的输入流
InputStream inputStream = file.getInputStream();
//使用EasyExcel库从输入流中读取Excel文件内容。
//接收一个 InputStream 对象作为参数,这个输入流指向要读取的 Excel 文件
// head(User.class)指定了数据的映射类型为User类,
// sheet()表示读取Excel的第一个工作表,
// doReadSync()执行同步读取操作
List<User> list = EasyExcel.read(inputStream).head(User.class).sheet().doReadSync();
//遍历 list 中的每个 User 对象,并调用 userService.userIns(user) 方法将每个 User 对象插入到数据库中。
for (User user : list) {
userService.userIns(user);
}
System.out.println(list);
}