java语言springboot框架下导出excel 接口写法,用easyexcel,分controller,service、dao层,模拟数据库获取数据导出
时间: 2024-03-02 19:51:04 浏览: 77
好的,下面给出分层的代码实现。
1. 假设我们有一个 `User` 实体类,用于存储用户信息。
```java
@Data
public class User {
private Integer id;
private String name;
private Integer age;
}
```
2. 编写 `UserDao` 接口和 `UserMapper` XML 文件,用于从数据库获取数据。
```java
public interface UserDao {
List<User> findAll();
}
@Mapper
public interface UserMapper {
@Select("SELECT * FROM user")
List<User> findAll();
}
```
3. 实现 `UserDao` 接口,并在 `UserServiceImpl` 中调用 `UserDao` 获取数据。
```java
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
public List<User> findAll() {
return userDao.findAll();
}
}
@Repository
public class UserDaoImpl implements UserDao {
@Autowired
private UserMapper userMapper;
@Override
public List<User> findAll() {
return userMapper.findAll();
}
}
```
4. 在 `UserController` 中调用 `UserService` 获取数据,并使用 EasyExcel 导出 Excel 文件。
```java
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/export")
public void export(HttpServletResponse response) throws IOException {
// 设置响应头,告诉浏览器要下载文件
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
response.setHeader("Content-disposition", "attachment;filename=users.xlsx");
// 准备数据
List<User> userList = userService.findAll();
// 将 User 转换成 ExcelData
List<ExcelData> dataList = userList.stream().map(user -> new ExcelData(user.getName(), user.getAge())).collect(Collectors.toList());
// 使用 EasyExcel 写入 Excel 文档
EasyExcel.write(response.getOutputStream(), ExcelData.class)
.sheet("Sheet1")
.doWrite(dataList);
}
}
```
其中,`ExcelData` 类的定义和 `export()` 方法的实现与之前的例子相同,不再赘述。
这样,我们就完成了基于 Spring Boot 和 EasyExcel 的数据导出功能。
阅读全文