web-dev-qa-db-fra.com

Reporting Services export vers Excel avec plusieurs feuilles de calcul

Je suis en train de créer un rapport MS Reporting Services qui est rendu dans Excel. J'essaie de comprendre comment configurer le rapport afin qu'il crée plusieurs feuilles de calcul (onglets) des données qu'il contient. Je comprends que la saisie d'un saut de page dans le rapport crée une nouvelle feuille de calcul. Cependant, existe-t-il un moyen de nommer chaque onglet au lieu de la valeur par défaut (feuille de calcul 1, feuille de calcul 2), etc.

Quelqu'un sait comment c'est fait?

Merci d'avance!

48
DotNetJayHawk

Comme l'a souligné @huttelihut , c'est désormais possible à partir de SQL Server 2008 R2 - En savoir plus ici

Avant 2008, R2 ne semblait pas possible, mais MSDN Social propose des solutions de contournement. 

11
cgreeno

Trop tard pour le demandeur initial de la question, mais avec SQL Server 2008 R2, cela est maintenant possible:

Définissez la propriété "Saut de page" sur le tableau ou le tableau ou un autre élément pour forcer un nouvel onglet, puis définissez la propriété "Nom de page" sur l'élément avant le saut de page et l'élément après le saut de page. Ces noms apparaîtront sur les onglets lors de l'exportation du rapport vers Excel.

Lisez à ce sujet ici: http://technet.Microsoft.com/en-us/library/dd255278.aspx

54
T.J.Kjaer

Voici des captures d'écran de SQL Server 2008 R2, à l'aide de SSRS Report Designer dans Visual Studio 2010. 

J'ai fait des captures d'écran, car certaines boîtes de dialogue ne sont pas faciles à trouver.

1: Ajouter le groupe

SsrsAddGroup

2: spécifiez le champ que vous souhaitez grouper

SsrsAddGroupDialog

3: Cliquez maintenant sur le groupe dans le sélecteur "Groupes de lignes", directement sous le concepteur de rapport  

SsrsRowGroupsSelector

4: F4 pour sélectionner le volet de propriétés; développez 'Groupe' et définissez Groupe> PageBreak> BreakLocation = 'Entre', puis entrez l'expression souhaitée pour Groupe> NomPage

SsrsGroupProperty

5: Voici un exemple d'expression

SsrsGroupPropertyDialog

Voici le résultat du rapport exporté vers Excel, avec des onglets nommés en fonction de l'expression PageName

SsrsExcelTabs

38
Edward

La solution d'Edward a fonctionné pour moi.

Si vous voulez que le tableau complet sur une feuille porte un nom constant, spécifiez le nom de la page dans les propriétés du tableau. Si vous définissez le nom de page dans les propriétés du tableau, vous ne pouvez pas utiliser les données du jeu de données du tableau dans votre expression.

Si vous souhaitez regrouper les lignes du tableau matriciel dans des feuilles (ou si vous voulez une feuille avec un nom basé sur les données), spécifiez le nom de la page dans l'en-tête de groupe.

5
AverageJon

J'ai trouvé un moyen simple de contourner cela en 2005. Voici mes étapes:

  1. Créez un paramètre de chaîne avec les valeurs «Y» et «N» appelées «PageBreaks».
  2. Ajoutez un niveau de groupe au-dessus du groupe (valeur) utilisé pour fractionner les données en plusieurs feuilles dans Excel. 
  3. Inséré dans le premier champ de la zone de texte de ce groupe, l’expression du «PageBreaks» en tant que tel… =IIF(Parameters!PageBreaks.Value="Y",Fields!DISP_PROJECT.Value,"") Remarque: Si le paramètre = 'Y ’, vous obtiendrez plusieurs feuilles pour chaque valeur différente . Sinon, le champ est NULL pour chaque enregistrement de groupe (ce qui ne provoque qu'un saut de page à la fin).
  4. Définissez la valeur masquée de visibilité de la nouvelle ligne de regroupement sur ‘True’.
  5. Remarque: lorsque cela sera fait, cela déterminera également si vous avez un saut de page dans la vue, mais mes utilisateurs l'adorent car ils en ont le contrôle.
2
koder

Placez le nom de l'onglet dans l'en-tête de la page ou dans le groupe TableRow1 de votre rapport afin qu'il apparaisse à la position "A1" de chaque feuille Excel. Ensuite, exécutez cette macro dans votre classeur 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

Sur le groupe, appuyez sur F4 et recherchez le nom de la page, sur les propriétés et nommez votre page, cela devrait résoudre votre problème

0
Gurru

Groupez les données de votre rapport en fonction de la catégorie sur laquelle vous souhaitez que vos feuilles soient basées. Indiquez que vous souhaitez que ce groupe commence une nouvelle page pour chaque nouvelle catégorie. Chaque page devient une nouvelle feuille de calcul dans le classeur Excel.

Remarque: j'utilise SQL Server 2003 et Excel 2003.

0
Jean