浏览代码

增加了N: 前缀说明这个cell是个NUMBER类型/不好看看怎么优化了

4.1.3.A
jueyue 10 年前
父节点
当前提交
eb7ce3269c
共有 4 个文件被更改,包括 28 次插入11 次删除
  1. +22
    -7
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/template/ExcelExportOfTemplateUtil.java
  2. 二进制
      easypoi-test/src/main/java/org/jeecgframework/poi/test/excel/doc/exportTemp.xls
  3. +5
    -3
      easypoi-test/src/main/java/org/jeecgframework/poi/test/excel/test/ExcelExportForMap.java
  4. +1
    -1
      easypoi-test/src/main/java/org/jeecgframework/poi/test/excel/test/ExcelExportTemplateTest.java

+ 22
- 7
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<ExcelExportEntity> excelParams = new ArrayList<ExcelExportEntity>();
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<String, Object> 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


二进制
easypoi-test/src/main/java/org/jeecgframework/poi/test/excel/doc/exportTemp.xls 查看文件


+ 5
- 3
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<ExcelExportEntity> entity = new ArrayList<ExcelExportEntity>();
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<ExcelExportEntity> temp = new ArrayList<ExcelExportEntity>();
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);
}


+ 1
- 1
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:/");


正在加载...
取消
保存