【问题标题】:Reporting Services export to Excel with Multiple WorksheetsReporting Services 使用多个工作表导出到 Excel
【发布时间】:2010-10-02 13:13:28
【问题描述】:

我目前正在构建一个呈现为 Excel 的 MS Reporting Services 报表。我试图弄清楚如何设置报告,以便在报告上创建多个数据工作表(选项卡)。我知道在报告中输入分页符会给你一个新的工作表,但是,有没有办法命名每个选项卡而不是默认为(工作表 1,工作表 2)等。

有人知道这是怎么做到的吗?

提前致谢!

【问题讨论】:

  • 那么如何在报表中添加分页符呢?

标签: reporting-services


【解决方案1】:

作为@huttelihut pointed out,现在可以从 SQL Server 2008 R2 - Read More Here 开始实现这一点

在 2008 R2 之前,这似乎不可能,但 MSDN Social 有一些建议的解决方法。

【讨论】:

  • 2014 年,使用当前工具。这个问题的答案就是下面这个问题的答案。
  • 感谢@RuneHansen 指出这一点!我改变了我的答案,以确保只要瞥一眼就不会错过它,但请给@huttelihut投票!
【解决方案2】:

Edward 的解决方案对我有用。

如果您希望将整个 tablix 放在一张具有常量名称的工作表上,请在 tablix 的 Properties 中指定 PageName。如果在 tablix 的 Properties 中设置 PageName,则不能在表达式中使用来自 tablix 数据集的数据。

如果您希望将 tablix 中的行分组到工作表中(或者您希望一个工作表的名称基于数据),请在组标题中指定 PageName。

【讨论】:

  • 最后一行对我有很大帮助“如果您希望将 tablix 中的行分组到工作表中(或者您希望一个工作表的名称基于数据),请在组标题中指定 PageName。” ,我的问题是我找不到这个,所以这里是:单击 Tablix -> 单击下面的组,如(Detailsxx) -> 在属性中展开组 -> 输入“PageName”表达式,如 =Fields!ItemNumber.Value。谢谢 :-)
【解决方案3】:

这是 SQL Server 2008 R2 的屏幕截图,使用 Visual Studio 2010 中的 SSRS 报表设计器。

我已经做了截图,因为有些对话框不容易找到。

1:添加群组

2:指定要分组的字段

3:现在单击报表设计器正下方的“行组”选择器中的组

4:F4 选择属性窗格;展开 'Group' 并设置 Group > PageBreak > BreakLocation = 'Between',然后为 Group > PageName 输入您想要的表达式

5:这是一个示例表达式

这是导出到 Excel 的报告结果,标签根据 PageName 表达式命名

【讨论】:

    【解决方案4】:

    在组上按 F4 并查找页面名称,在属性上并命名您的页面,这应该可以解决您的问题

    【讨论】:

      【解决方案5】:

      我在 2005 年找到了解决此问题的简单方法。以下是我的步骤:

      1. 使用值“Y”和“N”创建一个名为“PageBreaks”的字符串参数。
      2. 在用于将数据拆分到 Excel 中的多个工作表的组(值)之上添加一个组级别。
      3. 插入到该组的第一个文本框字段中,“PageBreaks”的表达式是这样的...... =IIF(Parameters!PageBreaks.Value="Y",Fields!DISP_PROJECT.Value,"") 注意:如果参数 ='Y',那么您将获得每个不同值的多个工作表。 否则,对于每条组记录,该字段都为 NULL(最后只导致一个分页符)。
      4. 将新分组行的可见性隐藏值更改为“True”。
      5. 注意:执行此操作时,它还将确定视图中是否有分页符,但我的用户喜欢它,因为他们拥有控制权。

      【讨论】:

        【解决方案6】:

        将选项卡名称放在报表的页眉或组 TableRow1 上,以便它显示在每个 Excel 工作表的“A1”位置。然后在您的 Excel 工作簿中运行此宏。

        Sub SelectSheet()
                For i = 1 To ThisWorkbook.Sheets.Count
                mysheet = "Sheet" & i
                On Error GoTo 10
                Sheets(mysheet).Select
                Set Target = Range("A1")
                If Target = "" Then Exit Sub
                On Error GoTo Badname
                ActiveSheet.Name = Left(Target, 31)
                GoTo 10
        Badname:
                MsgBox "Please revise the entry in A1." & Chr(13) _
                & "It appears to contain one or more " & Chr(13) _
                & "illegal characters." & Chr(13)
                Range("A1").Activate
        10
                Next i
        End Sub
        

        【讨论】:

          【解决方案7】:

          问题的最初提问者迟到了,但使用 SQL Server 2008 R2 现在可以做到这一点:

          在 tablix 或 table 或其他元素上设置属性“Pagebreak”以强制新选项卡,然后在分页符之前的元素和分页符之后的元素上设置属性“Pagename”。当报告导出到 Excel 时,这些名称将出现在选项卡上。

          在这里阅读:http://technet.microsoft.com/en-us/library/dd255278.aspx

          【讨论】:

            【解决方案8】:

            根据您希望工作表所基于的类别对报告数据进行分组。指定您希望该分组为每个新类别开始一个新页面。每个页面都成为 Excel 工作簿中的一个新工作表。

            注意:我使用 SQL Server 2003 和 Excel 2003。

            【讨论】:

              猜你喜欢
              • 2010-11-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-11-29
              • 1970-01-01
              相关资源
              最近更新 更多