使用 EasyExcel 从数据库导出 Excel 数据,并根据传来的参数进行中英文表头切换的步骤如下:
1. **添加依赖**:
首先,确保你的项目中包含 EasyExcel 的依赖。你可以在 `pom.xml` 文件中添加以下依赖(如果你使用的是 Maven)。
<dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.1.6</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.32</version> </dependency> ```
2. **创建数据实体类**:
创建一个实体类来表示从数据库中导出的数据。并和数据库对应:
```
3. **创建 Excel 模型类**:
创建两个模型类,一个用于中文表头,一个用于英文表头。
```java
public class UserExcelModelCN {
@ExcelProperty("用户ID")
private Long id;
@ExcelProperty("姓名")
private String name;
@ExcelProperty("年龄")
private Integer age;
// Getters and setters
}
public class UserExcelModelEN {
@ExcelProperty("User ID")
private Long id;
@ExcelProperty("Name")
private String name;
@ExcelProperty("Age")
private Integer age;
// Getters and setters
}
```
4. **从数据库获取数据**:
编写一个服务以从数据库中获取用户数据。这里假设使用 JPA Repository。
```java
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public List<User> getAllUsers() {
return userRepository.findAll();
}
}
```
5. **编写导出接口**:
在控制器类中编写一个接口,根据传入的参数导出 Excel 文件。
```java
@RestController
@RequestMapping("/api/export")
public class ExportController {
@Autowired
private UserService userService;
@GetMapping("/users")
public void exportUsers(@RequestParam String lang, HttpServletResponse response) throws IOException {
List<User> users = userService.getAllUsers();
// 设置响应头
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
String fileName = URLEncoder.encode("用户信息", "UTF-8").replaceAll("\\+", "%20");
response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
// 根据语言选择模型类
if ("en".equalsIgnoreCase(lang)) {
List<UserExcelModelEN> excelModels = users.stream()
.map(user -> {
UserExcelModelEN model = new UserExcelModelEN();
BeanUtils.copyProperties(user, model);
return model;
})
.collect(Collectors.toList());
EasyExcel.write(response.getOutputStream(), UserExcelModelEN.class).sheet("User Info").doWrite(excelModels);
} else {
List<UserExcelModelCN> excelModels = users.stream()
.map(user -> {
UserExcelModelCN model = new UserExcelModelCN();
BeanUtils.copyProperties(user, model);
return model;
})
.collect(Collectors.toList());
EasyExcel.write(response.getOutputStream(), UserExcelModelCN.class).sheet("用户信息").doWrite(excelModels);
}
}
}
```
6. **测试接口**:
启动你的 Spring Boot 应用程序,并通过浏览器或 Postman 访问以下 URL 进行测试:
- 中文表头: `http://localhost:8080/api/export/users?lang=cn`
- 英文表头: `http://localhost:8080/api/export/users?lang=en`
### 下载结果