首页 > 其他分享 >FineReport11 报表技巧01- 单元格HTML显示tag颜色标签

FineReport11 报表技巧01- 单元格HTML显示tag颜色标签

时间:2024-04-19 11:36:01浏览次数:26  
标签:01 颜色 报表 标签 单元格 点击 tag

背景
FineReport报表制作中,经常需要将某些单元格内容以彩色标签显示,其中根据不同对象内容进行不同展示,效果如下图所示:

实现效果为:
1、“年龄”列内容根据年龄段不同显示为不同颜色且带边框效果;
2、“性别”列性别为“男”显示为蓝色,性别为“女”显示为红色,性别为“未知”显示为灰色;
3、“参考科目”在表中内容较多时以顿号区分开且随机显示为不同颜色。

实现方法:
1.1、新建cpt文件,在模板数据集中新建内置数据集,并将表数据插入内置数据集中

1.2、设计表框架并将数据集字段拖入表头下方数据展示列

1.3、预览报表效果

2.1、打开设计器-模板-模板Web属性-引用CSS-导入css文件

2.2、选中年龄数据单元格,点击单元格属性、点击形态修改为“公式形态”,点击FX进入公式编辑栏

2.3、输入编辑脚本

公式:

if($$$<15,
"<span class='el-tag el-tag--success el-tag--plain is-round'><span class='el-tag__content'>"+$$$+"</span></span>",
if($$$<30,
"<span class='el-tag el-tag--warning el-tag--plain is-round'><span class='el-tag__content'>"+$$$+"</span></span>",
"<span class='el-tag el-tag--danger el-tag--plain is-round'><span class='el-tag__content'>"+$$$+"</span></span>"))

注释:
这里使用了一个if函数嵌套,
el-tag--plain 表示tag标签样式属于无颜色填充,
is-round 表示该标签为圆角标签
el-tag--success 表示标签颜色为绿色
el-tag--warning 表示标签颜色的橘黄色
el-tag--danger 表示标签颜色为红色

单元格属性-其他-显示内容为:用HTML显示内容

效果如下:

2.4、选中性别数据单元格,点击单元格属性、点击形态修改为“公式形态”,点击FX进入公式编辑栏输入公式脚本,单元格属性-其他-显示内容为:用HTML显示内容

公式:

switch($$$,"男", 
"<span class='el-tag el-tag--dark'><span class='el-tag__content'>男</span></span>", 
"女", 
"<span class='el-tag el-tag--dark el-tag--danger'><span class='el-tag__content'>女</span></span>",
"未知", 
"<span class='el-tag el-tag--dark el-tag--info'><span class='el-tag__content'>未知</span></span>")

注释:
使用switch函数,switch(表达式,值1,结果1,值2,结果2,....)
若表达式的结果是值1,则返回结果1
若表达式的结果是值2,则返回结果2
.....
el-tag--dark 表示tag标签样式属于有颜色填充,默认蓝色
el-tag--danger 表示填充颜色为红色
el-tag--info 表示填充颜色为灰色
颜色自定义在element-tag.css文件中预先定义好,需要修改的话可以在css文件中进行色值修改

效果如下:

2.5、选中参考科目数据单元格,点击单元格属性、点击形态修改为“公式形态”,点击FX进入公式编辑栏输入公式脚本,单元格属性-其他-显示内容为:用HTML显示内容

公式:

JOINARRAY(
	MAPARRAY(
		split($$$,"、"),
		"<span class='el-tag el-tag--"
		+SWITCH(
			RANDBETWEEN(0,4.1),
			1,"success",
			2,"info",
			3,"warning",
			4,"danger")
			+" el-tag--light'><span class='el-tag__content'>"
			+item+"</span></span>"),"、")

注释:
RANDBETWEEN(0,4.1)表示从1-4之间随机取数
SWITCH()函数搭配RANDBETWEEN()表示从['success','info','warning','danger']四个颜色中随机取
split($$$,"、")表示将当前单元格的值根据"、"进行切片
MAPARRAY()函数搭配split($$$,"、")可以将参考科目值全部用html标签分别包裹住
JOINARRAY()函数可以将所有html标签合并成一个字符串

效果如下:

PS:决策报表引入CSS文件
决策报表实现此功能与普通报表有所区别,只需要新增一步操作即可:
1、新增决策报表,拖入报表框,将普通报表内容复制粘贴
2、选中body-点击事件-选择初始化后-加入脚本

$('<link rel="stylesheet" type="text/css" href="/webroot/help/css/element-tag.css"/>').appendTo('head');
![](/i/l/?n=24&i=blog/3321052/202404/3321052-20240419112201050-1956163933.png)

其中"/webroot/help/css/element-tag.css"表示该样式文件所在路径,就是在决策报表中引用css文件
效果如下:

标签:01,颜色,报表,标签,单元格,点击,tag
From: https://www.cnblogs.com/xuy1166/p/18145383

相关文章

  • 洛谷题单指南-动态规划1-P1049 [NOIP2001 普及组] 装箱问题
    原题链接:https://www.luogu.com.cn/problem/P1049题意解读:装尽可能多的物品,使得总体积越大越好,即剩余空间最小,还是一个01背包问题,物品的体积就是其价值。解题思路:01背包模版题,物品体积、价值相同,直接采用一维dp。100分代码:#include<bits/stdc++.h>usingnamespacestd;co......
  • PKUSC2019 D1T1 题解
    前言五一网课的例题,但是网上没有详细的题解(其实就是都没放代码),所以来写一篇。题目可以在这里提交。题目简述有\(n\)(\(n\leq5\times10^5\))个村庄排成一排,每个村庄里有一个人。第\(i\)个村庄里的人要去第\(p_i\)个村庄,且\(p\)是\(1\simn\)的一个排列。他们出行......
  • L2-013 红色警报
    原题链接题解复杂图论题做多了这种题不会做了直接模拟即可,标记被摧毁的城市,然后遍历所有城市,能一次性搜索到的城市是一个城市群,累积有几个城市群code#include<bits/stdc++.h>usingnamespacestd;vector<int>G[505];intvis[505]={0};intdes[505]={0};voidss(intnow......
  • [01] JS-概述
    1.JavaScriptJavaScript与ECMAScript的关系:ECMAScript(简称“ES”)是根据ECMA-262标准实现的通用脚本语言,ECMA-262标准主要规定了这门语言的语法、类型、语句、关键字、保留字、操作符、对象等几个部分,目前ECMAScript的最新版是ECMAScript6(简称“ES6”)。至于JavaScrip......
  • P7177 [COCI2014-2015#4] MRAVI 题解
    思路。我们知道最初添加的液体越多,那么每个蚂蚁得到的液体也就越多,又因为标签里有深搜,所以可以用DFS+二分解决(感觉说了一通废话),算是比较常规的一种解法了。在此题中我们需要魔改一下建树,需在其中添加判断此边是否为超级管道和处理通过液体的百分比这两段代码。DFS和二分的代......
  • DP10RF001一款200MHz~960MHz 低功耗(G)FSK/OOK无线收发芯片应用无线遥控工控设备无线
    产品概述.DP10RF001是一款工作于200MHz~960MHz范围内的低功耗、高性能、单片集成的(G)FSK/OOK无线收发机芯片。内部集成完整的射频接收机、射频发射机、频率综合器、调制解调器,只需配备简单、低成本的外围器件就可以获得良好的收发性能。芯片支持灵活可设的数据包格式,支持自动应......
  • L2-001 紧急救援
    原题链接题解确定起点和终点,求救援人数最长,路径最短的路径,只需要集群算法中优先队列中重载比较符修改一下就就行,由于数据量很小,所以输出路径的时候搜索就行(最优解唯一)code#include<bits/stdc++.h>usingnamespacestd;structnode{intto,val;};vector<node>G[505......
  • JTCR-数据类型、变量和数组-01
    原始类型Java是强类型语言,在编译时会检查所有变量、表达式的类型是否兼容。Java为数据定义了8种原始类型(primitivetype),分为4组:整型:byte、short、int、long,表示整数。浮点数:float、double,表示小数。字符:char,表示字符集中的元素。Boolean:boolean,表示true/false值。......
  • LibreOJ-3038 「JOISC 2019 Day3」穿越时空 Bitaro <线段树> 题解
    审题一条链每条边有通行时间上下界限制通过一条边需要\(1\)单位时间站在当前节点时间减少\(1\)耗费\(1\)单位代价\(q\)次询问要么更改一条边的通信时间上下界要么询问在\(b\)时刻在城市\(a\),\(d\)时刻到达城市\(c\)的最小代价思想做题准备......
  • excel 无法正确处理 1900-03-01 前的日期
    ​excel无法正确处理1900-03-01前的日期 问题由来:excel用公式=TEXT(A1,"yyyy-mm-dd")转日期时,当A1的值等于59的时候,返回值是1900-02-28;当A1的值等于61的时候,返回值是1900-03-01;那么当A1的值为60的时候,返回值是多少?根据给出的信息,当A1的值为59时,返回值是1900-02-28,而......