Apache Poi 实现导出excel表格 合并区域边框未完全显示的问题
1、创建行及对应单元格,并合并行或列,其中cellStyle设置边框投屏top、bottom、left、right;
Row row=sheet.createRow(rowIndex);Cell cell=row.createCell(colIndex);
cell.setCellValue("测试");
cell.setCellStyle(cellStyle);CellRangeAddress region = new CellRangeAddress(firstRow, lastRow, firstCol, lastCol);
sheet.addMergedRegion(region);
此时导出的excel表格样式显示如图。
2、解决方法:采用RegionUtil设置合并区域的边框
CellRangeAddress region = new CellRangeAddress(firstRow, lastRow, firstCol, lastCol);
sheet.addMergedRegion(region);//合并区域添加边框
RegionUtil.setBorderTop(BorderStyle.THIN, region, sheet);
RegionUtil.setBorderBottom(BorderStyle.THIN, region, sheet);
RegionUtil.setBorderLeft(BorderStyle.THIN, region, sheet);
RegionUtil.setBorderRight(BorderStyle.THIN, region, sheet);
理论上采用上述方式设置合并区域的边框是可用的,但发现导出的表格合并区域还是缺少边框。表格显示如图。
将已合并的单元格手动取消合并后,发现边框均存在,再次手动合并单元格发现无边框缺失。
3、经过测试发现,是因为本项目在表格渲染的时候,将前六列与后续列分开渲染的,并且在后续列的渲染中接着新建行,没有延用前六列新建的行,于是产生了上述的问题。修改后合并区域的边框显示完整。
如有相同问题的小伙伴,可参考本文解决方式。