// 创建Excel文档
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("Sheet1");
CommonResponse<List<UserDto>> userList = userCenterClient.exportUserList(userRequest);
List<UserDto> records = userList.getData();
for (UserDto item : records) {
UserOrdersReqDto userOrdersReqDto = new UserOrdersReqDto();
userOrdersReqDto.setUid(item.getUid());
//根据uid查询所有订单
CommonResponse<List<UserOrdersDto>> listCommonResponse = orderClient.queryUserOrdersList(userOrdersReqDto);
List<UserOrdersDto> ordersData = listCommonResponse.getData();
if (ordersData.size() > 0) {
item.setStatus(ordersData.get(0).getStatus().getDescription());
}
}
// 创建表头
XSSFRow header = sheet.createRow(0);
header.createCell(0).setCellValue("注册时间");
header.createCell(1).setCellValue("用户姓名");
header.createCell(2).setCellValue("手机号");
header.createCell(3).setCellValue("身份证号");
header.createCell(4).setCellValue("是否人脸认证");
header.createCell(5).setCellValue("用户状态");
// 填充数据
int rowIndex = 1;
for (UserDto item : records) {
XSSFRow row = sheet.createRow(rowIndex++);
row.createCell(0).setCellValue(DateUtil.date2String(item.getCreateTime()));
row.createCell(1).setCellValue(item.getUserCertification() != null ? item.getUserCertification().getUserName() : "-");
row.createCell(2).setCellValue(item.getUserCertification() != null ? item.getUserCertification().getTelephone() : item.getTelephone());
row.createCell(3).setCellValue(item.getUserCertification() != null ? item.getUserCertification().getIdCard() : "-");
row.createCell(4).setCellValue(item.getIsAuth() ? "已认证" : "未支付");
row.createCell(5).setCellValue(item.getStatus() != null ? item.getStatus() : "-");
}
//导出到oss
ByteArrayOutputStream bos = new ByteArrayOutputStream();
workbook.write(bos);
byte[] barray = bos.toByteArray();
InputStream is = new ByteArrayInputStream(barray);
MultipartFile multipartFile = new MockMultipartFile("会员列表数据导出" + DateUtil.getDate(new Date(), DateUtil.DATETIME_FORMAT_7) + ".xlsx", is);
String url = OSSFileUtils.uploadByIns(multipartFile.getInputStream(), multipartFile.getName());
//导出到硬盘
OutputStream outputStream = new FileOutputStream("D://test.xlsx"); // 文件流若接口导出则可以从response获取
// OutputStream outputStream = response.getOutputStream(); // 文件流若接口导出则可以从response获取
workbook.write(outputStream);
outputStream.flush();
outputStream.close();
return url;
excel数据导出
最新推荐文章于 2024-10-08 17:16:52 发布