java代码如何使用poi导出excel到响应流中呢?
下文笔者将采用示例的方式,讲述导出excel到响应流中的方法及示例分享,如下所示
java中我们可采用Apache POI导出excel数据 如下例所示
例:在Spring Boot中使用Apache POI导出 Excel 到响应流
1.添加 Maven 依赖(POI) <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.2.3</version> <!-- 请根据需要选择版本 --> </dependency> 2.编写Controller接口(导出 Excel) import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Arrays; import java.util.list; @RestController @RequestMapping("/export") public class ExcelExportController { @GetMapping("/excel") public void exportExcel(HttpServletResponse response) throws IOException { // 设置响应头 response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); response.setHeader("Content-Disposition", "attachment; filename=users.xlsx"); // 创建 Workbook Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("用户列表"); // 表头 Row headerRow = sheet.createRow(0); List<String> headers = Arrays.asList("ID", "姓名", "年龄", "邮箱"); for (int i = 0; i < headers.size(); i++) { Cell cell = headerRow.createCell(i); cell.setCellValue(headers.get(i)); } // 模拟数据 List<User> users = List.of( new User(1L, "张三", 25, "zhangsan@example.com"), new User(2L, "李四", 30, "lisi@example.com") ); // 填充数据 int rowNum = 1; for (User user : users) { Row row = sheet.createRow(rowNum++); row.createCell(0).setCellValue(user.getId().toString()); row.createCell(1).setCellValue(user.getName()); row.createCell(2).setCellValue(user.getAge()); row.createCell(3).setCellValue(user.getEmail()); } // 输出到响应流 workbook.write(response.getOutputStream()); workbook.close(); } // 用户实体类 static class User { private Long id; private String name; private int age; private String email; public User(Long id, String name, int age, String email) { this.id = id; this.name = name; this.age = age; this.email = email; } public Long getId() { return id; } public String getName() { return name; } public int getAge() { return age; } public String getEmail() { return email; } } }
Apache POI代码注意事项
步骤 | 说明 |
设置响应类型 | `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet` |
设置文件名 | `Content-Disposition: attachment; filename=xxx.xlsx` |
使用 `XSSFWorkbook` | 支持 `.xlsx` 格式(推荐);若需支持 `.xls`, 可用 `HSSFWorkbook` |
写入响应流 | `workbook.write(response.getOutputStream())` |
关闭资源 | `workbook.close()`避免内存泄漏 |
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。