【发布时间】:2010-10-02 13:13:28
【问题描述】:
我目前正在构建一个呈现为 Excel 的 MS Reporting Services 报表。我试图弄清楚如何设置报告,以便在报告上创建多个数据工作表(选项卡)。我知道在报告中输入分页符会给你一个新的工作表,但是,有没有办法命名每个选项卡而不是默认为(工作表 1,工作表 2)等。
有人知道这是怎么做到的吗?
提前致谢!
【问题讨论】:
-
那么如何在报表中添加分页符呢?
我目前正在构建一个呈现为 Excel 的 MS Reporting Services 报表。我试图弄清楚如何设置报告,以便在报告上创建多个数据工作表(选项卡)。我知道在报告中输入分页符会给你一个新的工作表,但是,有没有办法命名每个选项卡而不是默认为(工作表 1,工作表 2)等。
有人知道这是怎么做到的吗?
提前致谢!
【问题讨论】:
作为@huttelihut pointed out,现在可以从 SQL Server 2008 R2 - Read More Here 开始实现这一点
在 2008 R2 之前,这似乎不可能,但 MSDN Social 有一些建议的解决方法。
【讨论】:
Edward 的解决方案对我有用。
如果您希望将整个 tablix 放在一张具有常量名称的工作表上,请在 tablix 的 Properties 中指定 PageName。如果在 tablix 的 Properties 中设置 PageName,则不能在表达式中使用来自 tablix 数据集的数据。
如果您希望将 tablix 中的行分组到工作表中(或者您希望一个工作表的名称基于数据),请在组标题中指定 PageName。
【讨论】:
这是 SQL Server 2008 R2 的屏幕截图,使用 Visual Studio 2010 中的 SSRS 报表设计器。
我已经做了截图,因为有些对话框不容易找到。
1:添加群组
2:指定要分组的字段
3:现在单击报表设计器正下方的“行组”选择器中的组
4:F4 选择属性窗格;展开 'Group' 并设置 Group > PageBreak > BreakLocation = 'Between',然后为 Group > PageName 输入您想要的表达式
5:这是一个示例表达式
这是导出到 Excel 的报告结果,标签根据 PageName 表达式命名
【讨论】:
在组上按 F4 并查找页面名称,在属性上并命名您的页面,这应该可以解决您的问题
【讨论】:
我在 2005 年找到了解决此问题的简单方法。以下是我的步骤:
=IIF(Parameters!PageBreaks.Value="Y",Fields!DISP_PROJECT.Value,"")
注意:如果参数 ='Y',那么您将获得每个不同值的多个工作表。
否则,对于每条组记录,该字段都为 NULL(最后只导致一个分页符)。【讨论】:
将选项卡名称放在报表的页眉或组 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
【讨论】:
问题的最初提问者迟到了,但使用 SQL Server 2008 R2 现在可以做到这一点:
在 tablix 或 table 或其他元素上设置属性“Pagebreak”以强制新选项卡,然后在分页符之前的元素和分页符之后的元素上设置属性“Pagename”。当报告导出到 Excel 时,这些名称将出现在选项卡上。
在这里阅读:http://technet.microsoft.com/en-us/library/dd255278.aspx
【讨论】:
根据您希望工作表所基于的类别对报告数据进行分组。指定您希望该分组为每个新类别开始一个新页面。每个页面都成为 Excel 工作簿中的一个新工作表。
注意:我使用 SQL Server 2003 和 Excel 2003。
【讨论】: