浏览代码

修改了下,el表达式的==判断,给fe加上了样式自定义方法

4.1.3.A
jueyue 9 年前
父节点
当前提交
ab589096e5
共有 5 个文件被更改,包括 69 次插入20 次删除
  1. +14
    -12
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/base/ExcelExportBase.java
  2. +6
    -0
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/styler/AbstractExcelExportStyler.java
  3. +9
    -0
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/styler/IExcelExportStyler.java
  4. +17
    -6
      easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/template/ExcelExportOfTemplateUtil.java
  5. +23
    -2
      easypoi-base/src/main/java/org/jeecgframework/poi/util/PoiFunctionUtil.java

+ 14
- 12
easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/base/ExcelExportBase.java 查看文件

@@ -55,17 +55,18 @@ import org.slf4j.LoggerFactory;
@SuppressWarnings("unchecked")
public abstract class ExcelExportBase extends ExportBase {
private static final Logger LOGGER = LoggerFactory.getLogger(ExcelExportBase.class);
private static final Logger LOGGER = LoggerFactory
.getLogger(ExcelExportBase.class);
private int currentIndex = 0;
private int currentIndex = 0;
protected ExcelType type = ExcelType.HSSF;
protected ExcelType type = ExcelType.HSSF;
private Map<Integer, Double> statistics = new HashMap<Integer, Double>();
private Map<Integer, Double> statistics = new HashMap<Integer, Double>();
private static final DecimalFormat DOUBLE_FORMAT = new DecimalFormat("######0.00");
private IExcelExportStyler excelExportStyler;
protected IExcelExportStyler excelExportStyler;
/**
* 创建 最主要的 Cells
@@ -88,12 +89,12 @@ public abstract class ExcelExportBase extends ExportBase {
if (entity.getList() != null) {
Collection<?> list = getListCellValue(entity, t);
int listC = 0;
if(list!=null&&list.size()>0){
for (Object obj : list) {
createListCells(patriarch, index + listC, cellNum, obj, entity.getList(), sheet,
workbook);
listC++;
}
if (list != null && list.size() > 0) {
for (Object obj : list) {
createListCells(patriarch, index + listC, cellNum, obj, entity.getList(),
sheet, workbook);
listC++;
}
}
cellNum += entity.getList().size();
if (list != null && list.size() > maxHeight) {
@@ -181,7 +182,8 @@ public abstract class ExcelExportBase extends ExportBase {
}
private int createIndexCell(Row row, int index, ExcelExportEntity excelExportEntity) {
if (excelExportEntity.getName().equals("序号")&&excelExportEntity.getFormat()!=null&&excelExportEntity.getFormat().equals(PoiBaseConstants.IS_ADD_INDEX)) {
if (excelExportEntity.getName().equals("序号") && excelExportEntity.getFormat() != null
&& excelExportEntity.getFormat().equals(PoiBaseConstants.IS_ADD_INDEX)) {
createStringCell(row, 0, currentIndex + "",
index % 2 == 0 ? getStyles(false, null) : getStyles(true, null), null);
currentIndex = currentIndex + 1;


+ 6
- 0
easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/styler/AbstractExcelExportStyler.java 查看文件

@@ -19,6 +19,7 @@ import org.apache.poi.ss.usermodel.BuiltinFormats;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Workbook;
import org.jeecgframework.poi.excel.entity.params.ExcelExportEntity;
import org.jeecgframework.poi.excel.entity.params.ExcelForEachParams;
/**
* 抽象接口提供两个公共方法
@@ -67,4 +68,9 @@ public abstract class AbstractExcelExportStyler implements IExcelExportStyler {
return null;
}
@Override
public CellStyle getTemplateStyles(boolean isSingle, ExcelForEachParams excelForEachParams) {
return null;
}
}

+ 9
- 0
easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/styler/IExcelExportStyler.java 查看文件

@@ -17,6 +17,7 @@ package org.jeecgframework.poi.excel.export.styler;
import org.apache.poi.ss.usermodel.CellStyle;
import org.jeecgframework.poi.excel.entity.params.ExcelExportEntity;
import org.jeecgframework.poi.excel.entity.params.ExcelForEachParams;
/**
* Excel导出样式接口
@@ -47,4 +48,12 @@ public interface IExcelExportStyler {
*/
public CellStyle getStyles(boolean noneStyler, ExcelExportEntity entity);
/**
* 模板使用的样式设置
* @param isSingle
* @param excelForEachParams
* @return
*/
public CellStyle getTemplateStyles(boolean isSingle, ExcelForEachParams excelForEachParams);
}

+ 17
- 6
easypoi-base/src/main/java/org/jeecgframework/poi/excel/export/template/ExcelExportOfTemplateUtil.java 查看文件

@@ -28,6 +28,7 @@ import java.util.Set;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Drawing;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
@@ -62,7 +63,8 @@ import org.slf4j.LoggerFactory;
*/
public final class ExcelExportOfTemplateUtil extends ExcelExportBase {
private static final Logger LOGGER = LoggerFactory.getLogger(ExcelExportOfTemplateUtil.class);
private static final Logger LOGGER = LoggerFactory
.getLogger(ExcelExportOfTemplateUtil.class);
/**
* 缓存TEMP 的for each创建的cell ,跳过这个cell的模板语法查找,提高效率
@@ -416,11 +418,16 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase {
//所有的cell创建一遍
for (int i = 0; i < rowspan; i++) {
for (int j = columnIndex, max = columnIndex + colspan; j < max; j++) {
if (row.getCell(j) == null){
if (row.getCell(j) == null) {
row.createCell(j);
row.getCell(j).setCellStyle(row.getRowNum() % 2 == 0 ? getStyles(false, null) : getStyles(true, null));
CellStyle style = row.getRowNum() % 2 == 0
? getStyles(false, columns.get(columnIndex - j))
: getStyles(true, columns.get(columnIndex - j));
//返回的styler不为空时才使用,否则使用Excel设置的,更加推荐Excel设置的样式
if (style != null)
row.getCell(j).setCellStyle(style);
}
}
if (i < rowspan - 1) {
row = row.getSheet().getRow(row.getRowNum() + 1);
@@ -486,6 +493,10 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase {
}
private CellStyle getStyles(boolean isSingle, ExcelForEachParams excelForEachParams) {
return excelExportStyler.getTemplateStyles(isSingle, excelForEachParams);
}
/**
* 设置合并单元格的样式
* @param row
@@ -543,8 +554,8 @@ public final class ExcelExportOfTemplateUtil extends ExcelExportBase {
cellStringString = cell.getStringCellValue();
if (StringUtils.isBlank(cellStringString) && colspan + startIndex <= index) {
throw new ExcelExportException("for each 当中存在空字符串,请检查模板");
} else
if (StringUtils.isBlank(cellStringString) && colspan + startIndex > index) {
} else if (StringUtils.isBlank(cellStringString)
&& colspan + startIndex > index) {
//读取是判断,跳过,数据为空,但是不是第一次读这一列,所以可以跳过
columns.add(new ExcelForEachParams(null, cell.getCellStyle(), (short) 0));
continue;


+ 23
- 2
easypoi-base/src/main/java/org/jeecgframework/poi/util/PoiFunctionUtil.java 查看文件

@@ -128,7 +128,7 @@ public final class PoiFunctionUtil {
return isGt(second, first);
} else if ("==".endsWith(operator)) {
if (first != null && second != null) {
return first.equals(second);
return eq(first, second);
}
return first == second;
} else if ("!=".endsWith(operator)) {
@@ -141,6 +141,27 @@ public final class PoiFunctionUtil {
}
}
/**
* 判断两个对象是不是相等
* @param first
* @param second
* @return
*/
private static boolean eq(Object first, Object second) {
//要求两个对象当中至少一个对象不是字符串才进行数字类型判断
if (!(first instanceof String) || !(second instanceof String)) {
try {
double f = Double.parseDouble(first.toString());
double s = Double.parseDouble(second.toString());
return f == s;
} catch (NumberFormatException e) {
//可能存在的错误,忽略继续进行
}
}
return first.equals(second);
}
/**
* 前者是不是大于后者
* @param first
@@ -158,5 +179,5 @@ public final class PoiFunctionUtil {
double two = Double.valueOf(second.toString());
return one > two;
}
}

正在加载...
取消
保存