单元格内容数字,字母或者中文显示不同的颜色

编辑
  • 文档创建者:ezreal
  • 浏览次数:3819次
  • 编辑次数:7次
  • 最近更新:jiangsr 于 2019-03-06
  • 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%\webapps\webroot\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 保存与预览

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




    附件列表


    主题: 二次开发
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]