如何从SSRS导出时获取命名的Excel工作表

时间:2009-04-10 07:02:18

标签: reporting-services reportingservices-2005 ssrs-2008 export-to-excel

每当将单页报告导出到Excel时,excel中的工作表由报告名称命名。 如果报表有多个页面,则表单将命名为sheet1,sheet2,.... 有没有办法在SSRS 2005中指定工作表名称?

溶液: 一些谷歌后发现这个: Changing the Sheet names in SQL Server RS Excel: QnD XSLT

如果有效,会尝试并发布更新。

10 个答案:

答案 0 :(得分:22)

Necromancing,以防所有链接都变暗:

  1. 在报告中添加一个组
    此外,建议在此处设置组表达式的排序顺序,因此选项卡将按字母顺序排序(或者您希望对其进行排序)。

    1. Add a group to your report

    • ' Zeilengruppe'意味着'目标群体'
    • ' Gruppeneigenschaften'表示'群组属性'
  2. 在组属性中设置分页符 2. Set the page break in the group properties

    • ' Seitenumbruche'意味着分页'
    • ' Zwischen den einzelnen Instanzen einer Gruppe'表示在组的各个实例之间'
  3. 现在您需要设置Tablix 会员(群组)的PageName Tablix的PageName <强> itselfs 即可。
    如果你有正确的对象,如果会说&#34; Tablix 会员&#34; (属性网格的标题框中的Tablix-Element in German)。如果它是错误的对象,它会说 only &#34; table / tablix&#34; (不使用成员)在属性网格的标题框中。

  4. 注意:如果你得到tablix而不是tablix成员,它会在每个标签中放置相同的标签名称,然后是(tabNum)!如果发生这种情况,您现在知道问题所在。 Tablix Member

  5. MultiTabExcelFile

答案 1 :(得分:15)

要导出到不同的工作表并使用自定义名称,从SQL Server 2008 R2开始,可以使用分组,分页符和组的 PageName 属性的组合来完成此操作。

或者,如果它只是您要提供特定名称的单页,请尝试在报告上使用 InitialPageName 属性。

有关更详细的说明,请查看此处:http://blog.hoegaerden.be/2011/03/23/where-the-sheets-have-a-name-ssrs-excel-export/

答案 2 :(得分:5)

答案 3 :(得分:3)

要在导出到Excel时添加选项卡名称,我使用了以下方法:

  • 在报告设计窗口中,选择tablix对象。
  • 打开tablix对象的属性窗口。
  • 将所需的标签名称添加到PageName属性。
  • 运行报告
  • 将报告导出到Excel。
  • 现在工作表名称与tablix对象的PageName属性相同。

答案 4 :(得分:2)

将选项卡名称放在页眉或报表中的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

答案 5 :(得分:1)

没有直接的方法。您可以导出XML然后右键XSLT以正确格式化它(这是很难的方法)。一种更简单的方法是编写多个报告,没有明确的分页符,因此每个报表只在excel中导出到一个工作表中,然后编写一个可以为您合并的脚本。无论哪种方式,它都需要一个后处理步骤。

答案 6 :(得分:1)

我能够按照Valentino Vranken和rao建议的更复杂的说明完成这项工作,但这是一个更简单的方法,用于更简单的报告。这将把每个表放在一个单独的工作表上,并在Excel中命名。它似乎对PDF和Word等其他导出没有影响。

首先在Tablix Properties下的General表格中,选中Add a page break before or after,然后将报告分成工作表。

然后在每个表中,单击表格,然后在Grouping视图的Row Groups侧,选择父组或默认行组,然后在Properties视图中在Group -> PageBreak下设置BreakLocationNonePageName到工作表的名称。

答案 7 :(得分:1)

  

矩形方法

我发现实现工作表/分页符的最简单,最可靠的方法是使用矩形工具。

将页面分组为矩形或填充子报告中页面的单个矩形,如下所示:

  • 我发现放置矩形的最快方法是将它绘制在您希望放置在矩形中的对象周围。

  • 右键单击并在布局菜单中,将矩形发送回去。

  • 选择所有对象并稍微拖动它们,但要确保它们落在它们所在的位置。它们现在都在矩形中。

在矩形属性中,您可以将分页设置为在矩形的开头或结尾处,页面名称可以基于表达式。

工作表的名称与页面名称相同。

重复的名称将在括号后缀中包含一个数字。

注意:确保名称是有效的工作表名称。

答案 8 :(得分:0)

您可以使用-sed-和-grep-替换或写入每个文件的xml标题,指定所有标记之间所需的工作表名称,例如sheetname1:

<Sheetnames>?sheetname1?</Sheetnames>

答案 9 :(得分:0)

虽然在对象上使用PageName属性实际上允许您在Excel中自定义导出的工作表名称,但请注意它还可以更新报表的命名空间定义,这可能会影响将报表重新部署到您的报表的能力服务器。

我有一份报告,我将其应用于BIDS并从2008年到2010年更新了我的命名空间。当我尝试将报告发布到2008R2报告服务器时,我收到一个错误,即命名空间无效且必须把一切还原。我确信我的情况可能是独特的,也许这并不总是会发生,但我认为值得发帖。一旦我发现问题,这个页面有助于恢复命名空间(除了重置命名空间之外,还必须删除标记):

http://beatheadagainstwall.blogspot.com/2011/03/invalid-target-namespace-when-deploying.html?showComment=1440647962263#c5741523651495876761