java用poi生成表格返回流给前端
时间: 2024-05-12 22:19:18 浏览: 220
以下是使用POI生成Excel表格并返回流给前端的Java代码示例:
```java
@RestController
public class ExcelController {
@GetMapping("/download/excel")
public ResponseEntity<InputStreamResource> downloadExcel() throws IOException {
// 创建Excel文档
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Sheet1");
// 创建表头
Row headerRow = sheet.createRow(0);
headerRow.createCell(0).setCellValue("姓名");
headerRow.createCell(1).setCellValue("年龄");
// 填充数据
Row dataRow1 = sheet.createRow(1);
dataRow1.createCell(0).setCellValue("张三");
dataRow1.createCell(1).setCellValue(20);
Row dataRow2 = sheet.createRow(2);
dataRow2.createCell(0).setCellValue("李四");
dataRow2.createCell(1).setCellValue(25);
// 将Excel文档写入流
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
workbook.write(outputStream);
ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
// 设置响应头
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Disposition", "attachment; filename=example.xlsx");
// 返回流给前端
return ResponseEntity.ok()
.headers(headers)
.contentType(MediaType.parseMediaType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"))
.body(new InputStreamResource(inputStream));
}
}
```
在以上代码中,我们使用了POI库创建了一个Excel文档,并将其写入到一个字节数组输出流中。然后,我们又创建了一个字节数组输入流,并设置了响应头,最后使用ResponseEntity将输入流返回给前端。注意,我们还需要使用MediaType指定返回的数据类型为Excel表格。
阅读全文