java导出excel(easyexcel方式)
1.maven的pom.xml文件中引入com.alibaba.easyexcel
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<!--根据实际需求引用对应版本-->
<version>3.1.1</version>
</dependency>
2. 导出结果实体类
/**
* 导出用户返回VO对象
*
*/
@Data
public class UserExportListRes {
@ExcelProperty("名称")
private String name;
@ExcelProperty("性别")
private String sex;
@ExcelProperty("年龄")
private String age;
}
使用@ExcelProperty注解,标明导出excel表头名称
3. controller代码
@RestController
@RequestMapping(value = "/user", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public class UserController {
@Autowired
private UserService userService;
/**
* 导出用户列表
* @param param 查询请求参数,根据业务需求定义,如果不需要查询即无需此参数
* @return
*/
@PostMapping(value = "/export")
public void export(HttpServletResponse response, @RequestBody userReq param){
userService.export(response, param);
}
}
4.service与service实现类代码
4.1 service代码:
public interface UserService{
/**
* 导出excel
* @param response
* @param param 请求参数
* @return
*/
void export(HttpServletResponse response, QueryUserListReq param);
}
4.2 service实现类代码:
@Slf4j
@Service
public class UserServiceImpl implements UserService {
@Override
public void export(HttpServletResponse response, QueryUserListReq param) {
String fileName = "";
try {
// 设置响应头
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
fileName = URLEncoder.encode("用户信息.xlsx", "UTF-8").replaceAll("\\+", "%20");
response.setHeader("Content-disposition", "attachment;filename*=UTF-8''" + fileName);
} catch (Exception e) {
e.printStackTrace();
}
try (ServletOutputStream outputStream = response.getOutputStream()) {
//todo 业务数据逻辑处理
List<UserExportListRes> userExportListResList = new ArrayList<>();
UserExportListRes userExportListRes = new UserExportListRes();
userExportListRes.setName("张三");
userExportListRes.setSex("男");
userExportListRes.setAge("18");
userExportListResList.add(userExportListRes);
UserExportListRes userExportListRes2 = new UserExportListRes();
userExportListRes2.setName("小红");
userExportListRes2.setSex("女");
userExportListRes2.setAge("18");
userExportListResList.add(userExportListRes2);
EasyExcel.write(outputStream, UserExportListRes.class)
.sheet("用户信息")
.doWrite(userExportListResList);
outputStream.flush();
} catch (Exception e) {
e.printStackTrace();
log.error("生成下载动态模板异常!", e);
}
}
}
EasyExcel.write将数据流与实体类的class写入,.sheet(“用户信息”)即设置导出文件sheet名称;.doWrite(userExportListResList)即写入需要导出的业务数据
5. 总结
使用com.alibaba.easyexcel可以快速, 简洁实现java导出简单的excel表格信息,如果需要具体格式话导出的excel样式,需根据以上内容深入研究如何设置excel格式。
以上内容,仅供各位兄弟姐妹参考,如发现问题,请各位多提出宝贵意见。