web-dev-qa-db-ja.com

複数のワークシートを使用したReporting ServicesのExcelへのエクスポート

現在、ExcelにレンダリングされるMS Reporting Servicesレポートを作成しています。レポートのデータの複数のワークシート(タブ)を作成するようにレポートを設定する方法を見つけようとしています。レポートに改ページを入力すると新しいワークシートが作成されることを理解していますが、各タブにデフォルトの(ワークシート1、ワークシート2)などの代わりに名前を付ける方法があります.

誰もこれがどのように行われるか知っていますか?

前もって感謝します!

50
DotNetJayHawk

@ huttelihutが指摘した として、これはSQL Server 2008 R2の時点で可能になりました- 詳細はこちら

2008 R2より前のバージョンでは不可能と思われますが、 MSDN Social には回避策がいくつか提案されています。

11
cgreeno

質問の元の質問者に遅れるが、SQL Server 2008 R2ではこれが可能になりました。

Tablixまたはテーブルまたはその他の要素にプロパティ「Pagebreak」を設定して新しいタブを強制し、改ページ前の要素と改ページ後の要素の両方にプロパティ「Pagename」を設定します。これらの名前は、レポートがExcelにエクスポートされるときにタブに表示されます。

ここでそれについて読む: http://technet.Microsoft.com/en-us/library/dd255278.aspx

54
T.J.Kjaer

Visual Studio 2010のSSRSレポートデザイナーを使用したSQL Server 2008 R2のスクリーンショットを次に示します。

一部のダイアログは見つけにくいため、スクリーンショットを作成しました。

1:グループを追加

SsrsAddGroup

2:グループ化するフィールドを指定

SsrsAddGroupDialog

:レポートデザイナーのすぐ下にある[行グループ]セレクターでグループをクリックします

SsrsRowGroupsSelector

4:プロパティペインを選択するにはF4、「グループ」を展開し、グループ> PageBreak> BreakLocation = 'Between'を設定し、グループ> PageNameに必要な式を入力します

SsrsGroupProperty

5:式の例です

SsrsGroupPropertyDialog

PageName式に従って名前が付けられたタブを使用して、Excelにエクスポートされたレポートの結果

SsrsExcelTabs

38
Edward

エドワードからのソリューションは私のために働いた。

一定の名前で1つのシートにTablix全体を含める場合は、TablixのプロパティでPageNameを指定します。 TablixのプロパティでPageNameを設定すると、式でTablixのデータセットのデータを使用できません。

Tablixの行をシートにグループ化する場合(またはデータに基づいた名前を持つ1つのシートが必要な場合)、グループヘッダーでPageNameを指定します。

5
AverageJon

2005年にこの問題を回避する簡単な方法を見つけました。ここに私の手順を示します。

  1. 「PageBreaks」と呼ばれる「Y」と「N」の値を持つ文字列パラメーターを作成します。
  2. データをExcelの複数のシートに分割するために使用されたグループ(値)の上にグループレベルを追加します。
  3. このグループの最初のテキストボックスフィールドに挿入され、「PageBreaks」の式など…=IIF(Parameters!PageBreaks.Value="Y",Fields!DISP_PROJECT.Value,"")注:パラメーターが「Y」の場合、異なる値ごとに複数のシートが取得されます。それ以外の場合、すべてのグループレコードのフィールドはNULLです(最後に1つの改ページのみが発生します)。
  4. 新しいグループ化行の非表示の可視性の値を「True」に変更します。
  5. 注:これを行うと、ビューに改ページがあるかどうかも判断されますが、ユーザーはコントロールを持っているため、改ページが大好きです。
2
koder

レポートのページヘッダーまたはグループ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
1
James Kuchynski

グループでF4を押してページ名を探し、プロパティでページに名前を付けると、問題が解決するはずです

0
Gurru

シートの基にするカテゴリに基づいてレポートデータをグループ化します。新しいカテゴリごとにグループ化して新しいページを開始することを指定します。各ページは、Excelブックの新しいワークシートになります。

注:SQL Server 2003とExcel 2003を使用しています。

0
Jean