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 9ea162d..baa6405 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 @@ -45,6 +45,7 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase { private static final String START_STR = "{{"; private static final String END_STR = "}}"; + private static final String NUMBER_Symbol = "N:"; /** * 缓存temp 的for each创建的cell ,跳过这个cell的模板语法查找,提高效率 */ @@ -80,6 +81,9 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase { .newInstance(workbook)); // 获取实体对象的导出数据 List excelParams = new ArrayList(); + if (excelParams.size() == 0) { + return; + } getAllExcelField(null, targetId, fileds, excelParams, pojoClass, null); // 根据表头进行筛选排序 sortAndFilterExportField(excelParams, titlemap); @@ -233,7 +237,6 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase { for (int i = row.getFirstCellNum(); i < row.getLastCellNum(); i++) { if (!tempCreateCellSet.contains(row.getRowNum() + "_" + row.getCell(i).getColumnIndex())) { - System.out.println(row.getCell(i).getStringCellValue()); setValueForCellByMap(row.getCell(i), map); } } @@ -247,24 +250,36 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase { * @param map */ private void setValueForCellByMap(Cell cell, Map map) throws Exception { - String oldString; - try {// step 1. 判断这个cell里面是不是函数 - oldString = cell.getStringCellValue(); - } catch (Exception e) { - LOGGER.error(e.getMessage(), e); + int cellType = cell.getCellType(); + if (cellType != Cell.CELL_TYPE_STRING && cellType == Cell.CELL_TYPE_NUMERIC) { return; } + String oldString; + cell.setCellType(Cell.CELL_TYPE_STRING); + oldString = cell.getStringCellValue(); if (oldString != null && oldString.indexOf(START_STR) != -1 && !oldString.contains("foreach||")) { // setp 2. 判断是否含有解析函数 String params; + boolean isNumber = false; + if (oldString.indexOf(NUMBER_Symbol) != -1) { + isNumber = true; + oldString = oldString.substring(2); + } while (oldString.indexOf(START_STR) != -1) { params = oldString.substring(oldString.indexOf(START_STR) + 2, oldString.indexOf(END_STR)); + oldString = oldString.replace(START_STR + params + END_STR, getParamsValue(params.trim(), map)); } - cell.setCellValue(oldString); + //如何是数值 类型,就按照数值类型进行设置 + if (isNumber) { + cell.setCellValue(Double.parseDouble(oldString)); + cell.setCellType(Cell.CELL_TYPE_NUMERIC); + } else { + cell.setCellValue(oldString); + } } //判断foreach 这种方法 if (oldString != null diff --git a/easypoi-test/src/main/java/org/jeecgframework/poi/test/excel/doc/exportTemp.xls b/easypoi-test/src/main/java/org/jeecgframework/poi/test/excel/doc/exportTemp.xls index 9b57ebd..545a407 100644 Binary files a/easypoi-test/src/main/java/org/jeecgframework/poi/test/excel/doc/exportTemp.xls and b/easypoi-test/src/main/java/org/jeecgframework/poi/test/excel/doc/exportTemp.xls differ diff --git a/easypoi-test/src/main/java/org/jeecgframework/poi/test/excel/test/ExcelExportForMap.java b/easypoi-test/src/main/java/org/jeecgframework/poi/test/excel/test/ExcelExportForMap.java index bb69c58..93d60a1 100644 --- a/easypoi-test/src/main/java/org/jeecgframework/poi/test/excel/test/ExcelExportForMap.java +++ b/easypoi-test/src/main/java/org/jeecgframework/poi/test/excel/test/ExcelExportForMap.java @@ -25,9 +25,11 @@ public class ExcelExportForMap { public void test() { try { List entity = new ArrayList(); - entity.add(new ExcelExportEntity("姓名", "name")); + ExcelExportEntity excelentity = new ExcelExportEntity("姓名", "name"); + excelentity.setNeedMerge(true); + entity.add(excelentity); entity.add(new ExcelExportEntity("性别", "sex")); - ExcelExportEntity excelentity = new ExcelExportEntity("学生", "students"); + excelentity = new ExcelExportEntity("学生", "students"); List temp = new ArrayList(); temp.add(new ExcelExportEntity("姓名", "name")); temp.add(new ExcelExportEntity("性别", "sex")); @@ -45,7 +47,7 @@ public class ExcelExportForMap { tempList.add(map); tempList.add(map); map.put("students", tempList); - + list.add(map); } diff --git a/easypoi-test/src/main/java/org/jeecgframework/poi/test/excel/test/ExcelExportTemplateTest.java b/easypoi-test/src/main/java/org/jeecgframework/poi/test/excel/test/ExcelExportTemplateTest.java index e9ad8d9..939f942 100644 --- a/easypoi-test/src/main/java/org/jeecgframework/poi/test/excel/test/ExcelExportTemplateTest.java +++ b/easypoi-test/src/main/java/org/jeecgframework/poi/test/excel/test/ExcelExportTemplateTest.java @@ -91,7 +91,7 @@ public class ExcelExportTemplateTest { temp.put("summon", i * 10000); map.put("i" + i, temp); } - params.setTemplateUrl("org/jeecgframework/poi/excel/doc/exportTemp.xls"); + params.setTemplateUrl("org/jeecgframework/poi/test/excel/doc/exportTemp.xls"); params.setSheetNum(1); Workbook book = ExcelExportUtil.exportExcel(params, CourseEntity.class, list, map); File savefile = new File("d:/");