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 版本

Reporting Services - 用户管理和安全配置

Reporting Services 身份验证问题

如何配置报表服务器扩展部署(Reporting Services 配置)