Reporting Services 使用多个工作表导出到 Excel
Posted
技术标签:
【中文标题】Reporting Services 使用多个工作表导出到 Excel【英文标题】:Reporting Services export to Excel with Multiple Worksheets 【发布时间】:2010-10-02 13:13:28 【问题描述】:我目前正在构建一个呈现为 Excel 的 MS Reporting Services 报表。我试图弄清楚如何设置报告,以便在报告上创建多个数据工作表(选项卡)。我知道在报告中输入分页符会给你一个新的工作表,但是,有没有办法命名每个选项卡而不是默认为(工作表 1,工作表 2)等。
有人知道这是怎么做到的吗?
提前致谢!
【问题讨论】:
那么如何在报表中添加分页符呢? 【参考方案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 中的 s-s-rS 报表设计器。
我已经做了截图,因为有些对话框不容易找到。
1:添加群组
2:指定要分组的字段
3:现在单击报表设计器正下方的“行组”选择器中的组
4:F4 选择属性窗格;展开 'Group' 并设置 Group > PageBreak > BreakLocation = 'Between',然后为 Group > PageName 输入您想要的表达式
5:这是一个示例表达式
这是导出到 Excel 的报告结果,标签根据 PageName 表达式命名
【讨论】:
【参考方案4】:在组上按 F4 并查找页面名称,在属性上并命名您的页面,这应该可以解决您的问题
【讨论】:
【参考方案5】:我在 2005 年找到了解决此问题的简单方法。以下是我的步骤:
-
使用值“Y”和“N”创建一个名为“PageBreaks”的字符串参数。
在用于将数据拆分到 Excel 中的多个工作表的组(值)之上添加一个组级别。
插入到该组的第一个文本框字段中,“PageBreaks”的表达式是这样的......
=IIF(Parameters!PageBreaks.Value="Y",Fields!DISP_PROJECT.Value,"")
注意:如果参数 ='Y',那么您将获得每个不同值的多个工作表。
否则,对于每条组记录,该字段都为 NULL(最后只导致一个分页符)。
将新分组行的可见性隐藏值更改为“True”。
注意:执行此操作时,它还将确定视图中是否有分页符,但我的用户喜欢它,因为他们拥有控制权。
【讨论】:
【参考方案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。
【讨论】:
以上是关于Reporting Services 使用多个工作表导出到 Excel的主要内容,如果未能解决你的问题,请参考以下文章
SQL Reporting Services ReportViewer 的多个版本
在 Reporting Services 报表上使用多个数据源?
将 Reporting Services 2008 配置为使用多个 Report Builder 版本