解决poi合并单元格之后边框缺失的解决办法


1.修改创建行代码:

//HSSFRow newrow = mSheet.createRow(wornum);
HSSFRow newrow = mSheet.getRow(wornum);
if (newrow == null) {
newrow = mSheet.createRow(wornum);
}
2.在合并单元格之后对样式进行重新设置:
//设置行合并
cellRange = new CellRangeAddress(0, 0, (headPointCellindex - 3), headPointCellindex - 1);
mSheet.addMergedRegion(cellRange);
setBorderStyle(1, cellRange, mSheet, mWorkBook); //给合并过的单元格加边框
3,样式设置
private static void setBorderStyle(int border, CellRangeAddress region, HSSFSheet sheet, HSSFWorkbook wb) {
HSSFCellStyle cs = wb.createCellStyle(); // 样式对象 
cs.setAlignment(org.apache.poi.ss.usermodel.HorizontalAlignment.CENTER);
cs.setVerticalAlignment(VerticalAlignment.CENTER);
cs.setBorderBottom(BorderStyle.valueOf((short) border));
cs.setBorderTop(BorderStyle.valueOf((short) border));
cs.setBorderLeft(BorderStyle.valueOf((short) border));
cs.setBorderRight(BorderStyle.valueOf((short) border));
setRegionStyle(cs, region, sheet);
}

private static void setRegionStyle(HSSFCellStyle cs, CellRangeAddress region, HSSFSheet sheet) {
for (int i = region.getFirstRow(); i <= region.getLastRow(); i++) {
HSSFRow row = sheet.getRow(i);
if (row == null) row = sheet.createRow(i);
for (int j = region.getFirstColumn(); j <= region.getLastColumn(); j++) {
HSSFCell cell = row.getCell(j);
if (cell == null) {
cell = row.createCell(j);
cell.setCellValue("");
}
cell.setCellStyle(cs);
}
}
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM