@GetMapping("/export") public void export(HttpServletResponse response) throws Exception { // 从数据库查询出所有的数据 List<User> list = userService.list(); // 通过工具类创建writer 写出到磁盘路径 // ExcelWriter writer = ExcelUtil.getWriter(filesUploadPath + "/用户信息.xlsx"); // 在内存操作,写出到浏览器 ExcelWriter writer = ExcelUtil.getWriter(true); //自定义标题别名 writer.addHeaderAlias("username", "用户名"); writer.addHeaderAlias("password", "密码"); writer.addHeaderAlias("nickname", "昵称"); writer.addHeaderAlias("email", "邮箱"); writer.addHeaderAlias("phone", "电话"); writer.addHeaderAlias("address", "地址"); writer.addHeaderAlias("createTime", "创建时间"); writer.addHeaderAlias("avatarUrl", "头像"); // 一次性写出list内的对象到excel,使用默认样式,强制输出标题 writer.write(list, true); // 设置浏览器响应的格式 response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"); String fileName = URLEncoder.encode("用户信息", "UTF-8"); response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx"); ServletOutputStream out = response.getOutputStream(); writer.flush(out, true); out.close(); writer.close(); }
时间: 2023-06-23 17:10:14 浏览: 174
这段代码是一个 Spring Boot 的控制器方法,用于导出用户信息到 Excel 文件并提供下载。具体实现如下:
1. 首先从数据库查询出所有的用户数据。
2. 使用 EasyExcel 工具类创建 ExcelWriter 对象,其中 ExcelWriter 可以选择将 Excel 写出到磁盘路径或者直接写出到内存中。
3. 自定义 Excel 表格的标题别名,方便用户阅读。
4. 将用户数据写出到 Excel 表格中,并强制输出标题。
5. 设置响应头,告诉浏览器下载的是 Excel 文件,并设置文件名。注意中文文件名需要进行 URL 编码。
6. 将 Excel 文件通过 ServletOutputStream 写出到响应流中,完成下载操作。
7. 最后记得关闭 ExcelWriter 对象和输出流。
相关问题
SpringBoot 将数据库数据导出成txt 并实现下载功能
要将数据库数据导出成txt并实现下载功能,可以按照以下步骤进行:
1. 在Spring Boot项目中添加相关依赖,如Apache POI和Apache Commons IO等。
2. 创建一个Controller,用于接收请求并响应下载文件。
```java
@RestController
public class ExportController {
@Autowired
private ExportService exportService;
@GetMapping("/export")
public void exportData(HttpServletResponse response) throws Exception {
// 文件名
String fileName = "data.txt";
// 文件内容
String content = exportService.exportData();
// 设置响应头信息
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
// 写入文件流
ServletOutputStream out = response.getOutputStream();
out.write(content.getBytes());
out.flush();
out.close();
}
}
```
3. 创建一个Service,用于从数据库中查询数据并导出为txt格式。
```java
@Service
public class ExportService {
@Autowired
private JdbcTemplate jdbcTemplate;
public String exportData() {
// 查询数据
List<Map<String, Object>> dataList = jdbcTemplate.queryForList("SELECT * FROM user");
// 导出为txt格式
StringBuilder sb = new StringBuilder();
for (Map<String, Object> data : dataList) {
sb.append(data.get("id")).append("\t")
.append(data.get("name")).append("\t")
.append(data.get("age")).append("\r\n");
}
return sb.toString();
}
}
```
4. 访问http://localhost:8080/export即可下载文件。
注意:以上代码仅为示例,实际应用中需要根据具体情况进行修改。另外,如果数据量较大,建议使用分页查询和流式写入方式,避免内存溢出。
springboot后台将mysql数据动态导出为带有header,且自动分配列宽,自动分页的PDF文档
可以使用以下步骤实现:
1. 引入相关依赖
```xml
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13.2</version>
</dependency>
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
```
2. 编写导出的接口
```java
@GetMapping("/export/pdf")
public void exportPdf(HttpServletResponse response) throws Exception {
List<User> userList = userService.listAllUsers();
// 设置文件名和文件类型
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "attachment; filename=\"userList.pdf\"");
// 创建PDF文档
Document document = new Document();
PdfWriter.getInstance(document, response.getOutputStream());
document.open();
// 添加表头
PdfPTable table = new PdfPTable(3);
table.addCell(new PdfPCell(new Phrase("ID")));
table.addCell(new PdfPCell(new Phrase("Name")));
table.addCell(new PdfPCell(new Phrase("Age")));
// 添加数据
for (User user : userList) {
table.addCell(String.valueOf(user.getId()));
table.addCell(user.getName());
table.addCell(String.valueOf(user.getAge()));
}
// 自动分配列宽
table.setWidthPercentage(100);
float[] columnWidths = new float[]{1f, 3f, 2f};
table.setWidths(columnWidths);
// 添加表格到文档中
document.add(table);
// 自动分页
document.close();
}
```
3. 在导出的接口中获取需要导出的数据并添加到PDF文档中,同时设置文件名和文件类型、自动分配列宽、自动分页等功能。
4. 访问导出的接口即可下载生成的PDF文件。
阅读全文