如何在SSRS报表的表格单元格中显示多色进度条?
实现SSRS多色分段进度条的方法
核心思路
通过矩形容器+多段子矩形的组合方式替代单一颜色数据条,利用表达式控制不同分段子矩形的宽度,实现按百分比区间显示不同颜色的进度条效果。
具体操作步骤
假设使用率字段为=Fields!使用率.Value(数值类型,如0.9对应90%),目标分段规则:
- ≤80%区间:深绿色
- 81%-100%区间:浅绿色
添加主矩形容器
- 选中使用率列的目标单元格,右键插入矩形,调整矩形高度与单元格匹配,宽度设为单元格可用宽度(例如5cm)。
添加深绿色分段子矩形
- 在主矩形内插入子矩形,设置填充颜色为深绿色(示例色值
#006633)。 - 设置子矩形宽度表达式:
(注:表达式中的=IIF(Fields!使用率.Value <= 0.8, 5 * Fields!使用率.Value, 5 * 0.8)5对应主矩形的宽度值,可根据实际调整) - 取消子矩形边框,调整高度与主矩形一致。
- 在主矩形内插入子矩形,设置填充颜色为深绿色(示例色值
添加浅绿色分段子矩形
- 在主矩形内插入第二个子矩形,放置于第一个子矩形右侧(可通过设置左偏移为第一个子矩形的宽度实现对齐)。
- 设置填充颜色为浅绿色(示例色值
#66CC99)。 - 设置子矩形宽度表达式:
=IIF(Fields!使用率.Value > 0.8, 5 * (Fields!使用率.Value - 0.8), 0) - 取消边框,高度与主矩形一致。
添加百分比文本(可选)
- 在主矩形内插入占位符,设置文本表达式为
=Format(Fields!使用率.Value, "P0")(显示整数百分比)。 - 调整占位符位置为居中,确保文本覆盖在进度条上方。
- 在主矩形内插入占位符,设置文本表达式为
细节优化
- 可为主矩形添加灰色边框,模拟进度条外框;
- 如需增加更多分段(如红色预警区间),重复步骤2-3,调整区间逻辑和对应颜色即可。
替代方案:HTML渲染法(适用于支持HTML的SSRS场景)
若报表允许HTML渲染,可在单元格占位符中使用拼接的HTML代码实现进度条:
- 选中单元格占位符,打开占位符属性;
- 设置“值”为以下表达式:
="<div style='width:100%; background:#eee; border:1px solid #ccc; height:20px; position:relative;'>" & IIF(Fields!使用率.Value <=0.8, "<div style='width:" & CStr(Fields!使用率.Value*100) & "%; background:#006633; height:100%;'></div>", "<div style='width:80%; background:#006633; height:100%; float:left;'></div><div style='width:" & CStr((Fields!使用率.Value-0.8)*100) & "%; background:#66CC99; height:100%; float:left;'></div>") & "<div style='position:absolute; top:0; left:0; width:100%; text-align:center; line-height:20px;'>" & Format(Fields!使用率.Value,"P0") & "</div></div>" - 勾选“允许HTML标记”,完成渲染设置。
内容的提问来源于stack exchange,提问作者Shiraineko
相关产品推荐
相关产品推荐

