From b3c28a5653b82d2d13fe10d8c4f871c40675fcef Mon Sep 17 00:00:00 2001 From: jueyue Date: Fri, 28 Aug 2015 23:37:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=90=88=E5=B9=B6=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=A0=BC=E7=9A=84=E6=97=B6=E5=80=99,=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../template/ExcelExportOfTemplateUtil.java | 30 +++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/template/ExcelExportOfTemplateUtil.java b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/template/ExcelExportOfTemplateUtil.java index abb250f..0794e4a 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/template/ExcelExportOfTemplateUtil.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/template/ExcelExportOfTemplateUtil.java @@ -428,6 +428,7 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase { row = row.getSheet().getRow(row.getRowNum() - rowspan + 1); for (int k = 0; k < rowspan; k++) { int ci = columnIndex;//cell的序号 + row.setHeight(columns.get(0 * colspan).getHeight()); for (int i = 0; i < colspan && i < columns.size(); i++) { boolean isNumber = false; params = columns.get(colspan * k + i); @@ -461,13 +462,15 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase { row.getCell(ci).setCellValue(val); } row.getCell(ci).setCellStyle(columns.get(i).getCellStyle()); + //如果合并单元格,就把这个单元格的样式和之前的保持一致 + setMergedRegionStyle(row, ci, columns.get(i)); //合并对应单元格 if ((params.getRowspan() != 1 || params.getColspan() != 1) && !mergedRegionHelper.isMergedRegion(row.getRowNum() + 1, ci)) { row.getSheet() .addMergedRegion(new CellRangeAddress(row.getRowNum(), - row.getRowNum() + params.getRowspan() - 1, i + columnIndex, - i + columnIndex + params.getColspan() - 1)); + row.getRowNum() + params.getRowspan() - 1, ci, + ci + params.getColspan() - 1)); } ci = ci - i + columns.get(i).getColspan() - 1; } @@ -476,6 +479,24 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase { } + /** + * 设置合并单元格的样式 + * @param row + * @param ci + * @param excelForEachParams + */ + private void setMergedRegionStyle(Row row, int ci, ExcelForEachParams params) { + //第一行数据 + for (int i = 1; i < params.getColspan(); i++) { + row.getCell(ci + i).setCellStyle(params.getCellStyle()); + } + for (int i = 1; i < params.getRowspan(); i++) { + for (int j = 0; j < params.getColspan(); j++) { + row.getCell(ci + j).setCellStyle(params.getCellStyle()); + } + } + } + /** * 获取迭代的数据的值 * @param cell @@ -520,7 +541,6 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase { //把读取过的cell 置为空 cell.setCellValue(""); if (cellStringString.contains(END_STR)) { - colspan = index - startIndex + 1; columns.add(getExcelTemplateParams(cellStringString.replace(END_STR, EMPTY), cell, mergedRegionHelper)); break; @@ -538,6 +558,10 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase { } } } + colspan = 0; + for (int i = 0; i < columns.size(); i++) { + colspan += columns.get(i).getColspan(); + } return new Object[] { rowspan, colspan, columns }; }