首先让我说清楚。我不是在询问我如何在Cognos BI中进行条件格式化。如果有一个简单的红色/琥珀色/绿色配色方案,基于值范围,那么我可以做到这一点。如果它是一个永不改变的静态颜色列表,我也可以这样做。
我正在访问的是访问存储在我的数据库中的十六进制颜色代码,我想将该颜色用作我的表格单元格背景颜色。这是我在SSRS报告中常见的事情,但在Cognos BI中看不到方法。
这甚至可能吗?
答案 0 :(得分:1)
您可以通过Cognos中的HTML对象执行此操作。
HTML对象可以从三种主要方式之一得到它的定义:
1)硬编码文本
2)数据项值
3)报告表达
显然第一种方法无法动态设置值。我根本无法让第二个工作。我还不确定为什么。但是,我能够使用第三种类型来动态设置视觉样式。
对于解决方案,我们假设您有一个名为[Color]的数据项,该数据项从CSS中使用的标准十六进制形式的数据库中提取字符串值:#xxxxxx,例如#CCCCCC。出于此示例的目的,我们假设它位于查询Query1中。以下步骤描述了如何设置它。
1)在列表正上方添加一个HTML项目
2)在列表底部添加另一个HTML项目
3)在顶部HTML项目中添加具有唯一ID的span标记,例如:
<span id="list">
4)在底部的HTML项目中添加一个结束范围标记
</span>
5)在所有其他HTML项目之前添加第三个HTML项目
6)将HTML项目的“Source Type”属性设置为“Report Expression”
7)在Report Expression中输入以下代码:
'<style>
#list td {
background-color: ' + [Query1].[Color] + '
}
</style>'
8)选择Page对象并将Query属性设置为Query1
9)单击Properties属性。选中“颜色”列以使页面可以访问该查询源值。
现在,您可以根据数据库提供的值动态设置列颜色。我们使用span来为我们提供一种方法来隔离我们想要操作的表格单元格。
这项技术并不完美。例如,标题单元也将其背景改变为所讨论的颜色,这可能是也可能不是所希望的。这是因为Cognos不会将th标记用于标题,而是将它们呈现为普通单元格(td)。
答案 1 :(得分:0)
我知道这是相当老的帖子,但为了完整性我会添加引用以使其在html,pdf和excel中工作。
为了使这个不仅适用于html,还适用于pdf和excel,请使用富文本项而不是html项。
例如,您可以在查询项中使用以下代码:
<span style="display:block; background-color:' + [Query Subject].[Query Item] + '"> </span>
然后,查询项必须包含由您的数据源定义的有效颜色(例如rgb(255,0,0)
)等。
拖动列表中的富文本项并将其更改为数据项值并选择查询项将起作用。
通过使用span它也可以用于excel,但是要确保它遵循层次结构中上层对象(列表列或表等)的大小,你想要display:block
样式。
您可以使用要作为文本显示的任何其他查询项,而不是> <
之间的空格。