后端将数据以 Excel 格式写入文件,并将文件作为响应返回给前端,前端通过下载链接下载该文件。
时间: 2024-03-13 20:47:05 浏览: 277
是的,这种方式是最常见的一种。下面是一个 Java Spring Boot 的示例代码,用于将数据导出到 Excel 文件并将文件作为响应返回给前端:
```java
@GetMapping("/export-excel")
public ResponseEntity<Resource> exportExcel() throws IOException {
// 1. 准备数据
List<User> users = userService.listAllUsers();
// 2. 生成 Excel 文件
ByteArrayOutputStream out = new ByteArrayOutputStream();
ExcelWriter writer = EasyExcel.write(out, User.class).build();
Sheet sheet = new Sheet(1, 0, User.class);
writer.write(users, sheet);
writer.finish();
// 3. 将 Excel 文件作为响应返回给前端
byte[] bytes = out.toByteArray();
ByteArrayResource resource = new ByteArrayResource(bytes);
return ResponseEntity.ok()
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=users.xlsx")
.contentType(MediaType.parseMediaType("application/vnd.ms-excel"))
.body(resource);
}
```
在这个示例中,我们首先准备了一些数据(`List<User>`),然后使用 EasyExcel 类库将数据写入 Excel 文件中。最后,我们将 Excel 文件转换为字节数组并创建一个 `ByteArrayResource` 对象,将其作为响应体返回给前端。在响应头中,我们设置了 `Content-Disposition` 属性,告诉浏览器将该文件作为附件下载,并设置了 `Content-Type` 属性,告诉浏览器该文件的 MIME 类型。
阅读全文