easyexcel从数据库导出数据,并且表头国际化

使用 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`

### 下载结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值