【问题标题】:How do I export a SSRS matrix to CSV without losing the structure?如何在不丢失结构的情况下将 SSRS 矩阵导出为 CSV?
【发布时间】:2011-08-21 21:25:37
【问题描述】:

考虑以下数据源:

declare @Test table (EmpId int, ProdId int, Sold int)
insert @Test (EmpId, ProdId, Sold) values (1, 1, 1)
insert @Test (EmpId, ProdId, Sold) values (1, 2, 2)
insert @Test (EmpId, ProdId, Sold) values (1, 3, 3)
insert @Test (EmpId, ProdId, Sold) values (1, 4, 4)
insert @Test (EmpId, ProdId, Sold) values (2, 1, 5)
insert @Test (EmpId, ProdId, Sold) values (2, 2, 6)
insert @Test (EmpId, ProdId, Sold) values (2, 3, 7)
insert @Test (EmpId, ProdId, Sold) values (2, 4, 8)
select * from @Test

我创建了一个 Sql Server Reporting Services (SSRS) 2008 R2 报告,其中包含一个配置如下的矩阵:

|         | [ProdId]    |
| [EmpId] | [Sum(Sold)] |

在预览模式下,呈现为以下内容(如预期的那样):

|   | 1 | 2 | 3 | 4 |
| 1 | 1 | 2 | 3 | 4 |
| 2 | 5 | 6 | 7 | 8 |

但是当我将它导出为 CSV 时,我得到了这个:

| EmpId | ProdId | Sold |
| 1     | 1      | 1    |
| 1     | 2      | 2    |
| 1     | 3      | 3    |
| 1     | 4      | 4    |
| 2     | 1      | 5    |
| 2     | 2      | 6    |
| 2     | 3      | 7    |
| 2     | 4      | 8    |

换句话说,当我导出为 CSV 时,我会丢失矩阵布局,并且每行数据都会呈现为单行 CSV。请注意,如果我导出到 Excel,报告会按预期工作,所以到目前为止,这个问题似乎仅限于 CSV。我尝试将矩阵重组为表中的表,但这也不能解决它。有什么建议吗?

【问题讨论】:

    标签: csv export ssrs-2008 ssrs-tablix


    【解决方案1】:

    这是 SSRS 2005 和 SSRS 2008 之间报表呈现的重大变化的一部分。

    我找到的唯一解决方案是:

    1. 导出到 Excel,然后将 Excel 文档另存为 CSV - 这会使 Excel 格式变平,并且需要设置分组,以便每一行重复父组的值。但是,首先导出到 Excel 存在问题,例如,如果连续行包含相同的数据,渲染器有时会忽略数据,可以通过将受影响列的 'DataElementOutput' 设置为 True 而不是 ' Auto',它允许渲染器猜测您可能认为哪些字段很重要。

    2. 将报表构建为平面表格 - 这几乎违背了创建矩阵的初衷,而且很痛苦,但是您可以提前定义列,并且可以在查询中动态地执行此操作,也可以在文本框值中使用大量表达式并设置动态列上的可见性。但要实现这一点,可能需要创建数十或数百列来处理特定值的潜在外观。

    3. 不要升级到 2008 - 如果矩阵报告和导出格式对业务至关重要,那么在 2008 年确实没有重新创建功能的好方法,坚持使用 2005 SSRS 是获得旧渲染的唯一可靠方法。

    资源

    【讨论】:

      【解决方案2】:

      这里有一个解决方法:

      • 将 CSV 输出源切换为一个额外的 tablix,它显示所有 数据原样。
      • 禁用原始 Tablix 输出到 CSV(Tablix > 属性 > 数据元素输出 > 无输出)。
      • 隐藏额外的 tablix 使其不显示。 (Tablix > 右键单击​​ > Tablix 属性 > 可见性 > 隐藏)。

      这样您就可以完全控制屏幕显示和 CSV 输出。

      【讨论】:

        【解决方案3】:

        有时适用于 SSRS 2016:

        1. 选择缺少的列
        2. 打开属性
        3. 仅更改数据 --> DataElementOutput 作为输出
        4. 此操作在哪里起作用会有所不同。例如,当我在 Tablix 上执行此操作时,它不起作用,但当我在列上执行此操作时,它起作用了。您可以尝试创建一个表来测试这之后是否效果更好。很遗憾,您不能在页脚上制作表格,这在这方面特别有用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-01-05
          • 2015-03-07
          • 1970-01-01
          • 2011-01-14
          • 1970-01-01
          • 2019-10-10
          • 2021-01-21
          • 1970-01-01
          相关资源
          最近更新 更多