历史版本2 :单元格内容数字,字母或者中文显示不同的颜色 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1.问题描述编辑

单元格显示内容的时候,有需求数字展示成不一样的颜色,如果是固定的文本可以使用html显示单元格内容,给固定的部分加上改变字体颜色的html标签。如果单元格的数据或者文本不固定的话就不好处理,本文会介绍一个自定义函数方法,给数字加上字体颜色改变的标签。
222

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,如下图:
222

2.4使用自定义函数

(1)数据准备

新建工作簿,添加内置数据集Embedded1:

222
(2)公式使用

将数据列拖至单元格A1,双击A1,选择高级,值使用公式=flaghtmlcolor($$$,"red","n"),如下图:

222

注:公式第三个参数控制需要显示不同颜色的文本类型,"n" 代表是数字,"c" 代表字母,"z" 代表中文。

(3)单元格属性

选中A1单元格,在右侧单元格属性表中设置设置单元格内容以html显示,如下图:

222

2.5保存与预览

保存模板,点击分页预览,效果如上图,数字变为红色。