合并本地呈现的 Microsoft 报表中的单元格
Combining Cells in Locally Rendered Microsoft Report
我的报告中有一个基本的 Tablix,目前呈现如下:
这些是制造过程中的步骤,执行这些步骤的人员的时钟编号以及执行日期在最后两列中。但是,有时步骤会合并在一起执行。在上面的示例中,步骤10-20一起执行,30-40一起执行。所以我真的很想像这样呈现报告:
我的数据中确实有一个名为 "StepRange" 的列,在上面的示例中,前两行为“10-20”,第三行和第四行为“30-40”。因此,当 StepRange 的值相似时,我知道这些行是一起执行的,因此以后应该合并最后两列。我的例子显示一次只合并两行,但它可以是任何数字。
如何使我的报告看起来像上面的第二个示例而不是第一个?
单一 Tablix 方法
您可以使用表达式设置文本框的边框样式来实现类似的效果,而不是文字条件合并。有几个步骤,但其中 none 个特别涉及。
为 StepRange 创建一个 parent 组。不要添加 header 或页脚,并在不删除组的情况下删除添加的列。
确保您的属性面板在屏幕右侧可见。如果没有,请选中“查看”功能区下的 "Properties" 复选框。
- 单击您的第一个详细信息文本框并展开 "BorderStyle" 属性。将 "Top" 属性 设置为以下表达式:
=IIF(RunningValue(Field!Step.Value,CountDistinct,"StepRange")>1, "None", "Solid")
将底部 属性 设置为 "None"。
设置详细信息TextBox本身的表达。
用适当的字段替换 FIELDNAME:
=IIF(RunningValue(Field!Step.Value,CountDistinct,"StepRange")>1, "", Field!FIELDNAME.Value)
对每个详细信息文本框重复此过程。
如果您没有汇总行,您可能需要在底部创建一个顶部带有黑色边框的虚拟行。 (可选)
对于每个 StepRange 组中的第一个 Step 值,表达式的计算结果仅为 "Solid",因此后续行没有上边框并且显示为未分割。
嵌套 Tablix 方法
使用嵌套的 Tablix 更直接。我遇到了一些问题,包括一些渲染问题。但在一份如此简单的报告中,可能根本不是问题。
- 将您的主要 Tablix 设置为在 StepRange 上分组。
- 为各个步骤清除或在左侧添加一列。
- Select "Insert Table" 从工具栏中单击空白单元格。
- 将单元格设置为您的步骤和操作字段并删除多余的列。
结果大致如下所示:
默认情况下,内部 Tablix 将进行详细分组。如果您的详细信息行比 "Step" 字段更细化,请转到“(详细信息)”组的属性并为步骤添加一个组表达式。
如果您不想在报告中看到重复的 header 行,您也可以删除它。
这会导致员工字段实际合并并正确间距。如果您不对这些字段使用聚合函数,它们的值将是内部返回的第一行的值。如果它们的值在各个步骤中是统一的,那是没有实际意义的。
我的报告中有一个基本的 Tablix,目前呈现如下:
这些是制造过程中的步骤,执行这些步骤的人员的时钟编号以及执行日期在最后两列中。但是,有时步骤会合并在一起执行。在上面的示例中,步骤10-20一起执行,30-40一起执行。所以我真的很想像这样呈现报告:
我的数据中确实有一个名为 "StepRange" 的列,在上面的示例中,前两行为“10-20”,第三行和第四行为“30-40”。因此,当 StepRange 的值相似时,我知道这些行是一起执行的,因此以后应该合并最后两列。我的例子显示一次只合并两行,但它可以是任何数字。
如何使我的报告看起来像上面的第二个示例而不是第一个?
单一 Tablix 方法
您可以使用表达式设置文本框的边框样式来实现类似的效果,而不是文字条件合并。有几个步骤,但其中 none 个特别涉及。
为 StepRange 创建一个 parent 组。不要添加 header 或页脚,并在不删除组的情况下删除添加的列。
确保您的属性面板在屏幕右侧可见。如果没有,请选中“查看”功能区下的 "Properties" 复选框。
- 单击您的第一个详细信息文本框并展开 "BorderStyle" 属性。将 "Top" 属性 设置为以下表达式:
=IIF(RunningValue(Field!Step.Value,CountDistinct,"StepRange")>1, "None", "Solid")
将底部 属性 设置为 "None"。
设置详细信息TextBox本身的表达。
用适当的字段替换 FIELDNAME:
=IIF(RunningValue(Field!Step.Value,CountDistinct,"StepRange")>1, "", Field!FIELDNAME.Value)
对每个详细信息文本框重复此过程。
如果您没有汇总行,您可能需要在底部创建一个顶部带有黑色边框的虚拟行。 (可选)
对于每个 StepRange 组中的第一个 Step 值,表达式的计算结果仅为 "Solid",因此后续行没有上边框并且显示为未分割。
嵌套 Tablix 方法
使用嵌套的 Tablix 更直接。我遇到了一些问题,包括一些渲染问题。但在一份如此简单的报告中,可能根本不是问题。
- 将您的主要 Tablix 设置为在 StepRange 上分组。
- 为各个步骤清除或在左侧添加一列。
- Select "Insert Table" 从工具栏中单击空白单元格。
- 将单元格设置为您的步骤和操作字段并删除多余的列。
结果大致如下所示:
默认情况下,内部 Tablix 将进行详细分组。如果您的详细信息行比 "Step" 字段更细化,请转到“(详细信息)”组的属性并为步骤添加一个组表达式。
如果您不想在报告中看到重复的 header 行,您也可以删除它。
这会导致员工字段实际合并并正确间距。如果您不对这些字段使用聚合函数,它们的值将是内部返回的第一行的值。如果它们的值在各个步骤中是统一的,那是没有实际意义的。