前言:
此时咱们对“excel表格树形结构”大致比较关怀,姐妹们都需要学习一些“excel表格树形结构”的相关文章。那么小编也在网上收集了一些有关“excel表格树形结构””的相关文章,希望姐妹们能喜欢,咱们快快来学习一下吧!需求描述
需要导出excel表格,横坐标为层数,纵坐标也是层数,单元格内容为树形结构数据
示例
思路
计算出每个树形结构每个数据坐标进行递归填充,即可实现
伪代码实现
//下载private void doDocDownLoad(HttpServletResponse response, Data data) { response.setContentType(Constants.CONTENT_TYPE_EXCEL); response.setCharacterEncoding(Charsets.UTF_8.name()); String fileName = data.getCompanyInfoData().getCompanyName() + "-股东穿透核查报告.xls"; // 防止中文乱码 String encodeFileName = URLEncoder.encode(fileName, Charsets.UTF_8).replaceAll("\\+", "%20"); response.setHeader(Constants.FIELD_CONTENT_DISPOSITION, "attachment;filename*=utf-8''" + encodeFileName); String templatePath = "/static/template.xls"; try (InputStream inputStream = this.getClass().getResourceAsStream(templatePath)) { ExcelWriter excelWriterAnalysis = EasyExcel.write(response.getOutputStream()).withTemplate(inputStream) .excelType(ExcelTypeEnum.XLS) // 下载树形列表 exeDownLoadMoreListData(excelWriterAnalysis, data); //写入结束 excelWriterAnalysis.finish(); } catch (IOException e) { log.error("文件下载失败", e); } }//执行下载private void exeDownLoadMoreListData(ExcelWriter excelWriterAnalysis,Data data) { // 此为填充数据 WriteSheet writeSheet0= EasyExcel.writerSheet(0) .registerWriteHandler(new SheetWriteHandler() { @Override public void afterSheetCreate(SheetWriteHandlerContext context) { Workbook workbook = context.getWriteWorkbookHolder().getWorkbook(); Sheet sheet = workbook.getSheetAt(0); 、 //代码略 Map<String, Integer> map = new HashMap<>(); map.put("rowNum", rowNum); //递归填充数据 populateMoreListCellTree(layer, sheet, map); //填充头 populateHead(Heads(), sheet, workbook); } }) .build(); excelWriterAnalysis.fill("data", writeSheet0); } //递归填充内容 private void populateMoreListCellTree( Integer level, Sheet sheet, Map<String, Integer> map , String location) { //代码略 //创建行 Row row = sheet.getRow(rowNum); if (row == null) { row = sheet.createRow(rowNum); } //创建列 Cell cell = row.getCell(level); if (cell == null) { cell = row.createCell(level); } //赋值单元格值 cell.setCellValue(location); populateMoreListCellTree(level,sheet, map,); } //填充头 private void populateHead(Head heads, Sheet sheet, Workbook workbook) { //填充头 Row rowLevel = sheet.getRow(0); if (rowLevel == null) { rowLevel = sheet.createRow(0); } Cell cellLevel = rowLevel.getCell(1); if (cellLevel == null) { cellLevel = rowLevel.createCell(1); } cellLevel.setCellValue( "层"); //填充样式 CellStyle cellStyle = workbook.createCellStyle(); populateStyle(cellStyle, workbook, cellLevel); } //填充样式 private void populateStyle(CellStyle cellStyle, Workbook workbook, Cell cellHead) { //填充格式 Font font = workbook.createFont(); //设置背景色 cellStyle.setFillForegroundColor(IndexedColors.GREY_50_PERCENT.getIndex()); cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); //设置居中 cellStyle.setAlignment(HorizontalAlignment.CENTER); cellStyle.setVerticalAlignment(VerticalAlignment.CENTER); //字体为白色 font.setColor(IndexedColors.WHITE.getIndex()); //设置字体大小 font.setFontHeightInPoints((short) 12); //设置单元格长度 cellStyle.setFont(font); cellHead.setCellStyle(cellStyle); }结语
喜欢的朋友们,点点赞,留个关注,后面继续分享工作中遇到的实际应用问题案例
对于技术方面,朋友们有什么想学习的内容,可以分享在评论区,或许你的想学习的内容会在下一次分享中出现
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #excel表格树形结构