| | |
| | | import org.apache.poi.ss.usermodel.DataValidationHelper; |
| | | import org.apache.poi.ss.usermodel.Sheet; |
| | | import org.apache.poi.ss.util.CellRangeAddressList; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.http.HttpHeaders; |
| | | import org.springframework.http.MediaType; |
| | |
| | | import javax.xml.bind.ValidationException; |
| | | import java.io.ByteArrayOutputStream; |
| | | import java.io.IOException; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.io.IOException; |
| | | import java.time.format.DateTimeFormatter; |
| | |
| | | dto.getPlatformId()); |
| | | } |
| | | //查询所有平台名称 |
| | | List<String> platfromNames = result.stream() |
| | | .map(ResultListVO::getPlatform_name) |
| | | List<String> platfromNames = platformService.list().stream() |
| | | .map(Platform::getPlatform_name) |
| | | .filter(Objects::nonNull) |
| | | .collect(Collectors.toList()); |
| | | // 3. 导出Excel |
| | |
| | | |
| | | // 3. 使用自定义的SheetWriteHandler来添加数据验证 |
| | | ExcelWriter excelWriter = EasyExcel.write(out, ResultListVO.class) |
| | | /* .registerWriteHandler(new SheetWriteHandler() { |
| | | @Override |
| | | public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, |
| | | WriteSheetHolder writeSheetHolder) { |
| | | Sheet sheet = writeSheetHolder.getSheet(); |
| | | |
| | | // 添加数据验证(下拉框) |
| | | DataValidationHelper helper = sheet.getDataValidationHelper(); |
| | | CellRangeAddressList rangeList = new CellRangeAddressList( |
| | | 1, 65535, 0, 0); // D列(第4列) |
| | | |
| | | DataValidationConstraint constraint = helper.createExplicitListConstraint( |
| | | platfromNames.toArray(new String[0])); |
| | | DataValidation validation = helper.createValidation(constraint, rangeList); |
| | | sheet.addValidationData(validation); |
| | | } |
| | | })*/ |
| | | .build(); |
| | | |
| | | |
| | | WriteSheet writeSheet = EasyExcel.writerSheet("平台分布占比").build(); |
| | | excelWriter.write(result, writeSheet); |
| | | excelWriter.finish(); |
| | | |
| | | // 4. 构建响应 |
| | | return ResponseEntity.ok() |
| | | .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=references_export.xlsx") |
| | | .contentType(MediaType.APPLICATION_OCTET_STREAM) |
| | | .body(out.toByteArray()); |
| | | } |
| | | |
| | | /** |
| | | * 根据平台查看 0-当前轮 1-代表前1轮 2-代表前2轮 |
| | | */ |
| | | @PostMapping("/exportGetResultByPlatformId2") |
| | | @ApiOperation(value = "导出:根据平台查看2") |
| | | public ResponseEntity<byte[]> exportGetResultByPlatformId2(@RequestBody ExportGetResultByPlatformIdDTO dto) { |
| | | Keyword keyword = keywordService.getById(dto.getKeywordId()); |
| | | List<ResultListVO> result=new ArrayList<>(); |
| | | if (dto.getIsNow()==0){ |
| | | result = keywordMapper.getResultByPlatformId(dto.getKeywordId(), dto.getQuestionId(), keyword.getNum(), |
| | | dto.getPlatformId()); |
| | | }else { |
| | | result = keywordMapper.getResultByPlatformId(dto.getKeywordId(), dto.getQuestionId(), 1, |
| | | dto.getPlatformId()); |
| | | } |
| | | List<ResultList2VO> result2=new ArrayList<>(); |
| | | for (ResultListVO vo : result) { |
| | | ResultList2VO vo2 = new ResultList2VO(); |
| | | BeanUtils.copyProperties(vo, vo2); // 复制同名同类型的字段 |
| | | result2.add(vo2); |
| | | } |
| | | //查询所有平台名称 |
| | | List<String> platfromNames = platformService.list().stream() |
| | | .map(Platform::getPlatform_name) |
| | | .filter(Objects::nonNull) |
| | | .collect(Collectors.toList()); |
| | | // 3. 导出Excel |
| | | ByteArrayOutputStream out = new ByteArrayOutputStream(); |
| | | |
| | | // 3. 使用自定义的SheetWriteHandler来添加数据验证 |
| | | ExcelWriter excelWriter = EasyExcel.write(out, ResultList2VO.class) |
| | | .registerWriteHandler(new SheetWriteHandler() { |
| | | @Override |
| | | public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, |
| | |
| | | |
| | | |
| | | WriteSheet writeSheet = EasyExcel.writerSheet("平台分布占比").build(); |
| | | excelWriter.write(result, writeSheet); |
| | | excelWriter.write(result2, writeSheet); |
| | | excelWriter.finish(); |
| | | |
| | | // 4. 构建响应 |
| | |
| | | @ApiOperation("下载投喂模板") |
| | | public ResponseEntity<byte[]> downTemplate() throws IOException { |
| | | ByteArrayOutputStream out = new ByteArrayOutputStream(); |
| | | EasyExcel.write(out, ReferenceExcel.class).sheet("投喂模板").doWrite(new ArrayList<>()); |
| | | // 创建示例数据(第一行) |
| | | ReferenceExcel exampleData = new ReferenceExcel(); |
| | | exampleData.setPlatform_name("示例平台"); |
| | | exampleData.setTitle("示例标题"); |
| | | exampleData.setCreate_time(LocalDate.now()); // 设置当前日期作为示例 |
| | | exampleData.setUrl("https://example.com"); |
| | | |
| | | List<ReferenceExcel> excelList=new ArrayList<>(); |
| | | excelList.add(exampleData); |
| | | |
| | | ExcelWriter excelWriter = EasyExcel.write(out, ReferenceExcel.class).build(); |
| | | WriteSheet writeSheet = EasyExcel.writerSheet("平台分布占比").build(); |
| | | excelWriter.write(excelList, writeSheet); |
| | | excelWriter.finish(); |
| | | |
| | | |
| | | return ResponseEntity.ok() |
| | | .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=platform_template.xlsx") |