Browse Source

修复合并单元格的时候,样式的bug

4.1.3.A
jueyue 9 years ago
parent
commit
b3c28a5653
1 changed files with 27 additions and 3 deletions
  1. +27
    -3
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/template/ExcelExportOfTemplateUtil.java

+ 27
- 3
easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/template/ExcelExportOfTemplateUtil.java View File

@@ -428,6 +428,7 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase {
row = row.getSheet().getRow(row.getRowNum() - rowspan + 1); row = row.getSheet().getRow(row.getRowNum() - rowspan + 1);
for (int k = 0; k < rowspan; k++) { for (int k = 0; k < rowspan; k++) {
int ci = columnIndex;//cell的序号 int ci = columnIndex;//cell的序号
row.setHeight(columns.get(0 * colspan).getHeight());
for (int i = 0; i < colspan && i < columns.size(); i++) { for (int i = 0; i < colspan && i < columns.size(); i++) {
boolean isNumber = false; boolean isNumber = false;
params = columns.get(colspan * k + i); params = columns.get(colspan * k + i);
@@ -461,13 +462,15 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase {
row.getCell(ci).setCellValue(val); row.getCell(ci).setCellValue(val);
} }
row.getCell(ci).setCellStyle(columns.get(i).getCellStyle()); row.getCell(ci).setCellStyle(columns.get(i).getCellStyle());
//如果合并单元格,就把这个单元格的样式和之前的保持一致
setMergedRegionStyle(row, ci, columns.get(i));
//合并对应单元格 //合并对应单元格
if ((params.getRowspan() != 1 || params.getColspan() != 1) if ((params.getRowspan() != 1 || params.getColspan() != 1)
&& !mergedRegionHelper.isMergedRegion(row.getRowNum() + 1, ci)) { && !mergedRegionHelper.isMergedRegion(row.getRowNum() + 1, ci)) {
row.getSheet() row.getSheet()
.addMergedRegion(new CellRangeAddress(row.getRowNum(), .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; 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 * @param cell
@@ -520,7 +541,6 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase {
//把读取过的cell 置为空 //把读取过的cell 置为空
cell.setCellValue(""); cell.setCellValue("");
if (cellStringString.contains(END_STR)) { if (cellStringString.contains(END_STR)) {
colspan = index - startIndex + 1;
columns.add(getExcelTemplateParams(cellStringString.replace(END_STR, EMPTY), columns.add(getExcelTemplateParams(cellStringString.replace(END_STR, EMPTY),
cell, mergedRegionHelper)); cell, mergedRegionHelper));
break; 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 }; return new Object[] { rowspan, colspan, columns };
} }


Loading…
Cancel
Save