1

我先说清楚。我不是在问我如何在 Cognos BI 中进行条件格式化。如果有一个简单的红色/琥珀色/绿色配色方案,基于值范围,那么我可以做到这一点。如果它是一个从未改变的静态颜色列表,我也可以这样做。

我所追求的是访问存储在我的数据库中的十六进制颜色代码,我想使用该颜色作为我的表格单元格背景颜色。这是我在 SSRS 报告中经常做的事情,但在 Cognos BI 中看不到方法。

这甚至可能吗?

4

2 回答 2

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 标签

</span>

5) 在所有其他 HTML 项之前添加第三个 HTML 项
6) 将 HTML 项的“源类型”属性设置为“报告表达式”
7) 在报告表达式中输入以下代码:

'<style>
#list td {
 background-color: ' + [Query1].[Color] + '
}
</style>'

8) 选择 Page 对象并将 Query 属性设置为 Query1
9) 单击 Properties 属性。检查颜色列以授予页面访问该查询源值的权限。

现在您可以根据数据库提供的值动态设置列颜色。我们使用 span 为我们提供了一种仅隔离我们想要操作的表格单元格的方法。

技术并不完美。例如,标题单元格的背景也会更改为有问题的颜色,这可能是可取的,也可能不是可取的。这是因为 Cognos 不对标题使用 th 标记,而是将它们呈现为普通单元格 (td)。

于 2014-08-22T18:14:05.347 回答
0

我知道这是相当老的帖子,但为了完整起见,我将添加参考以使其在 html、pdf 和 excel 中工作。

要使其不仅适用于 html,而且适用于 pdf 和 excel,请使用富文本项目而不是 html 项目。

例如,您可以在查询项中使用以下代码:

<span style="display:block; background-color:' + [Query Subject].[Query Item] + '"> </span>

然后,查询项必须包含rgb(255,0,0)由您的数据源定义的有效颜色(例如 )等。

拖动列表中的富文本项并将其更改为数据项值并选择查询项将起作用。

通过使用跨度,它也适用于 excel,但是要确保它遵循层次结构中上层对象(列表列或表格等)的大小,您需要该display:block样式。

> <您可以使用要显示为文本的任何其他查询项,而不是两者之间的空格。

于 2015-10-13T12:56:22.287 回答