如何在Spring Boot中返回Excel文件流?
时间: 2024-03-21 10:40:32 浏览: 235
在Spring Boot中,我们可以使用Apache POI库来生成Excel文件,并将其转换为字节流返回给前端。
以下是一个示例代码:
```java
@GetMapping("/download-excel")
public ResponseEntity<InputStreamResource> downloadExcel() throws IOException {
// 创建Excel文件
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Sheet 1");
Row row = sheet.createRow(0);
row.createCell(0).setCellValue("Hello");
row.createCell(1).setCellValue("World");
// 将Excel文件转换为字节流
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
workbook.write(outputStream);
byte[] bytes = outputStream.toByteArray();
// 设置响应头
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.parseMediaType("application/vnd.ms-excel"));
headers.setContentDispositionFormData("attachment", "example.xlsx");
// 返回文件流
InputStreamResource resource = new InputStreamResource(new ByteArrayInputStream(bytes));
return new ResponseEntity<>(resource, headers, HttpStatus.OK);
}
```
在上述示例代码中,我们使用`Workbook`和`Sheet`类创建了一个Excel文件,并将其转换为字节流。然后,我们设置了响应头,指定了文件类型和文件名,并将字节流包装在`InputStreamResource`对象中,最后将其作为响应体返回给前端。
阅读全文