From 5f49b6883c1e65a72faa0f7db8b501c3024e2cfe Mon Sep 17 00:00:00 2001 From: jueyue Date: Fri, 28 Aug 2015 22:17:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A8=A1=E6=9D=BF=20=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=90=88=E5=B9=B6=E7=9A=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- easypoi-annotation/pom.xml | 2 +- easypoi-base/pom.xml | 2 +- .../template/ExcelExportOfTemplateUtil.java | 25 +++++++++++-------- .../poi/excel/imports/CellValueServer.java | 7 +++++- easypoi-web/pom.xml | 2 +- pom.xml | 4 +-- 7 files changed, 27 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 9aac0bf..648d287 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ EasyPoi Excel和 Word简易工具类 作者博客:http://blog.csdn.net/qjueyue 作者邮箱: qrb.jueyue@gmail.com QQ群: 364192721 - 测试项目: http://git.oschina.net/jueyue/easypoi-test + 测试项目: [http://git.oschina.net/jueyue/easypoi-test](http://git.oschina.net/jueyue/easypoi-test) --------------------------- EasyPoi的主要特点 diff --git a/easypoi-annotation/pom.xml b/easypoi-annotation/pom.xml index 07f8136..23992d2 100644 --- a/easypoi-annotation/pom.xml +++ b/easypoi-annotation/pom.xml @@ -4,7 +4,7 @@ org.jeecg easypoi - 2.1.3 + 2.1.4-SNAPSHOT easypoi-annotation 基础注解类,解耦合 diff --git a/easypoi-base/pom.xml b/easypoi-base/pom.xml index d4514fd..2ef6f04 100644 --- a/easypoi-base/pom.xml +++ b/easypoi-base/pom.xml @@ -4,7 +4,7 @@ org.jeecg easypoi - 2.1.3 + 2.1.4-SNAPSHOT easypoi-base 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 a931f35..abb250f 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 @@ -427,16 +427,18 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase { ExcelForEachParams params; row = row.getSheet().getRow(row.getRowNum() - rowspan + 1); for (int k = 0; k < rowspan; k++) { - for (int i = 0; i < colspan; i++) { + int ci = columnIndex;//cell的序号 + for (int i = 0; i < colspan && i < columns.size(); i++) { boolean isNumber = false; params = columns.get(colspan * k + i); - tempCreateCellSet.add(row.getRowNum() + "_" + (i + columnIndex)); + ci += i; + tempCreateCellSet.add(row.getRowNum() + "_" + (ci)); if (params == null) { continue; } if (StringUtils.isEmpty(params.getName()) && StringUtils.isEmpty(params.getConstValue())) { - row.getCell(i + columnIndex).setCellStyle(columns.get(i).getCellStyle()); + row.getCell(ci).setCellStyle(columns.get(i).getCellStyle()); continue; } String val = null; @@ -453,20 +455,21 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase { val = eval(tempStr, map).toString(); } if (isNumber && StringUtils.isNotEmpty(val)) { - row.getCell(i + columnIndex).setCellValue(Double.parseDouble(val)); - row.getCell(i + columnIndex).setCellType(Cell.CELL_TYPE_NUMERIC); + row.getCell(ci).setCellValue(Double.parseDouble(val)); + row.getCell(ci).setCellType(Cell.CELL_TYPE_NUMERIC); } else { - row.getCell(i + columnIndex).setCellValue(val); + row.getCell(ci).setCellValue(val); } - row.getCell(i + columnIndex).setCellStyle(columns.get(i).getCellStyle()); + row.getCell(ci).setCellStyle(columns.get(i).getCellStyle()); //合并对应单元格 if ((params.getRowspan() != 1 || params.getColspan() != 1) - && !mergedRegionHelper.isMergedRegion(row.getRowNum() + 1, i + columnIndex)) { + && !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)); } + ci = ci - i + columns.get(i).getColspan() - 1; } row = row.getSheet().getRow(row.getRowNum() + 1); } @@ -489,10 +492,11 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase { if (!name.contains(END_STR)) { int index = cell.getColumnIndex(); //保存col 的开始列 - int startIndex = index; + int startIndex = cell.getColumnIndex(); Row row = cell.getRow(); while (true) { - cell = row.getCell(++index); + index += columns.get(columns.size() - 1).getColspan(); + cell = row.getCell(index); //可能是合并的单元格 if (cell == null) { //读取是判断,跳过 @@ -516,6 +520,7 @@ 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; diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/CellValueServer.java b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/CellValueServer.java index c50eb9f..1b3848b 100644 --- a/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/CellValueServer.java +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/excel/imports/CellValueServer.java @@ -199,7 +199,12 @@ public class CellValueServer { return Float.valueOf(String.valueOf(result)); } if ("class java.lang.Integer".equals(xclass) || "int".equals(xclass)) { - return Integer.valueOf(String.valueOf(result)); + try { + return Integer.valueOf(String.valueOf(result)); + } catch (Exception e) { + //格式错误的时候,就用double,然后获取Int值 + return Double.valueOf(String.valueOf(result)).intValue(); + } } if ("class java.math.BigDecimal".equals(xclass)) { return new BigDecimal(String.valueOf(result)); diff --git a/easypoi-web/pom.xml b/easypoi-web/pom.xml index d13a7f6..bbb5f8f 100644 --- a/easypoi-web/pom.xml +++ b/easypoi-web/pom.xml @@ -4,7 +4,7 @@ org.jeecg easypoi - 2.1.3 + 2.1.4-SNAPSHOT easypoi-web diff --git a/pom.xml b/pom.xml index ae00c8e..709a23f 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.jeecg easypoi - 2.1.3 + 2.1.4-SNAPSHOT pom easypoi @@ -38,7 +38,7 @@ - 2.1.3 + 2.1.4-SNAPSHOT 3.9 2.9.1 16.0.1