📄 commonfield.java
字号:
/***********************************************************************
* Module: CommonField.java
* Author: juny
* Created: 2006年7月13日 14:13:26
* Purpose: Defines the Class CommonField
***********************************************************************/
package net.excel.report.base.element;
import java.util.Date;
import net.excel.report.Logger;
import net.excel.report.base.BaseField;
import net.excel.report.base.ITempletContainer;
import net.excel.report.base.Parameter;
import net.excel.report.util.AnalyseTempletTool;
import jxl.format.CellFormat;
import jxl.write.DateTime;
import jxl.write.Number;
import jxl.write.WritableCell;
import jxl.write.WritableCellFeatures;
/**
* 普通模板字段处理类,代表模板中的一个具体定义的字段类模板对象, 如$F{ds.field1},
* $P{param1}等都被抽象成一个CommonField对象实例。
* @author juny
*/
public class CommonField extends BaseField {
private static Logger log = Logger.getLogger(CommonField.class);
/**
* @param container
*/
public CommonField(ITempletContainer container) {
super(container);
}
/*
* (non-Javadoc)
* @see excel.report.base.IElementWriter#setElementTempletValue(java.lang.String)
*/
public void setElementTempletValue(String value) {
var = ElementFactory.getVariableInstances(value);
if (null == var) {
log.error("Couldn't create the variable instance! -"
+ value);
}
StringBuffer s = new StringBuffer(AnalyseTempletTool
.getElementDeclare(value));
if (AnalyseTempletTool.haveVariableName(s)) {
setName(AnalyseTempletTool.getVariableName(s));
} else {
setName(var.getName());
}
}
/*
* (non-Javadoc)
* @see net.excel.report.base.BaseField#writeImpl(net.excel.report.base.Parameter)
*/
public boolean writeImpl(Parameter param) throws Exception {
if (null == var) {
return false;
}
//配置参数
setParam(param);
Object value = var.getValue();
//modified date 2006-11-01 当返回值为null时,当前单元格设置为""字符串
if(null == value){
value = "";
}
WritableCell cell = param.wc;
try {
WritableCell retCell = copyCellByType(cell, value, param.destCol,
param.destRow);
if (null == retCell) {
retCell = copyDefaultCell(param, value);
}
param.wc = retCell;
} catch (Exception e) {
log.error("Catch an exception while write a cell in col="
+ cell.getColumn() + " row=" + cell.getRow() + " value is"
+ value.toString() + " \n" + " error message:"
+ e.getMessage());
return false;
}
return true;
}
/**
* 设置模板对象参数,通过参数模板对象知道自己应该从何处去取得具体的模板值
* @param param
*/
private void setParam(Parameter param) {
if (!initialized) {
//配置相应变量对象的初始化参数。
if (var instanceof FieldVariable) {
((FieldVariable) var).setDataSource(param.dataSources);
} else if (var instanceof ParameterVariable) {
((ParameterVariable) var).setParam(param.params);
}
initialized = true;
}
}
/**
* 拷贝一个单元格,新单元格的类型根据数据的类型来产生,
* 并复制源单元格的格式化,边框等其他属性到新的单元格中。
* @param cell
* @param value
* @param destCol
* @param destRow
* @return
*/
private WritableCell copyCellByType(WritableCell cell, Object value,
int destCol, int destRow) {
WritableCell retCell = null;
CellFormat cellformat = null;
if (value instanceof Date) {
cellformat = cell.getCellFormat();
DateTime dt = null;
if (null != cellformat) {
dt = new DateTime(destCol, destRow, (Date) value, cell
.getCellFormat());
} else {
dt = new DateTime(destCol, destRow, (Date) value);
}
retCell = dt;
}
if (value instanceof java.lang.Number) {
cellformat = cell.getCellFormat();
Number n = null;
if (null != cellformat) {
n = new Number(destCol, destRow, Double.parseDouble(value
.toString()), cell.getCellFormat());
} else {
n = new Number(destCol, destRow, Double.parseDouble(value
.toString()));
}
retCell = n;
}
if (null != retCell) {
WritableCellFeatures wcf = cell.getWritableCellFeatures();
if (null != wcf) {
retCell.setCellFeatures(wcf);
}
}
return retCell;
}
public String toString() {
if (null != var) {
return var.toString();
}
return "null";
}
private Variable var = null;
private boolean initialized = false;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -