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);
}
}
}