历史版本2 :单元格内容数字,字母或者中文显示不同的颜色 返回文档
编辑时间:
内容长度:图片数:目录数:
修改原因:
1.问题描述编辑
单元格显示内容的时候,有需求数字展示成不一样的颜色,如果是固定的文本可以使用html显示单元格内容,给固定的部分加上改变字体颜色的html标签。如果单元格的数据或者文本不固定的话就不好处理,本文会介绍一个自定义函数方法,给数字加上字体颜色改变的标签。
2.示例编辑
自定义一个函数,原始文本作为第一个参数,需要显示的颜色作为第二个参数,需要显示的字符标识作为第三个参数。
2.1编写自定义函数
代码如下:
package com.fr.function;
import com.fr.script.AbstractFunction;
import com.fr.stable.Primitive;
public class FlagHtmlColor extends AbstractFunction {
public Object run(Object[] args) {
String txt="";
String color="";
String flag="";
if(null==args||args.length==0){
return Primitive.ERROR_NAME;
}else if(args.length==1){
txt=args[0].toString();
color="red";
flag="N";
}else if(args.length==2){
txt=args[0].toString();
color=args[1].toString();
flag="N";
}else{
txt=args[0].toString();
color=args[1].toString();
flag=args[2].toString();
}
String result=getHtmlStr(txt, color, flag);
return result;
}
public String getHtmlStr(String txt,String color,String flag){
String starthtml="<font color='"+color+"'>";
String endhtml="</font>";
StringBuffer sb=new StringBuffer();
int len=txt.length();
if("N".equalsIgnoreCase(flag)){//数字
for(int i=0;i<len;i++){
char c=txt.charAt(i);
if(c>='0'&&c<='9'){
String str=starthtml+c+endhtml;
sb.append(str);
}else{
sb.append(c);
}
}
}else if("C".equalsIgnoreCase(flag)){//字母
for(int i=0;i<len;i++){
char c=txt.charAt(i);
if((c>='a'&&c<='z')||(c>='A'&&c<='Z')){
String str=starthtml+c+endhtml;
sb.append(str);
}else{
sb.append(c);
}
}
} else if("Z".equalsIgnoreCase(flag)){//中文
for(int i=0;i<len;i++){
char c=txt.charAt(i);
if(c >= 0x4E00 && c <= 0x9FA5){
String str=starthtml+c+endhtml;
sb.append(str);
}else{
sb.append(c);
}
}
}else{
return txt;
}
return sb.toString();
}
}
2.2 编译自定义函数
编译FlagHtmlColor.java文件,并且将生成的class文件拷贝至%FR_HOME%/WebReport/WEB-INF/classes/com/fr/function目录下。
2.3添加自定义函数
启动设计器,点击服务器>函数管理器,添加一个自定义函数命名为flaghtmlcolor,类名选择com.fr.function.FlagHtmlColor,如下图:
2.4使用自定义函数
(1)数据准备
新建工作簿,添加内置数据集Embedded1:
(2)公式使用
将数据列拖至单元格A1,双击A1,选择高级,值使用公式=flaghtmlcolor($$$,"red","n"),如下图:
注:公式第三个参数控制需要显示不同颜色的文本类型,"n" 代表是数字,"c" 代表字母,"z" 代表中文。
(3)单元格属性
选中A1单元格,在右侧单元格属性表中设置设置单元格内容以html显示,如下图:
2.5保存与预览
保存模板,点击分页预览,效果如上图,数字变为红色。