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!
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.
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
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
2: spécifiez le champ que vous souhaitez grouper
3: Cliquez maintenant sur le groupe dans le sélecteur "Groupes de lignes", directement sous le concepteur de rapport
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
5: Voici un exemple d'expression
Voici le résultat du rapport exporté vers Excel, avec des onglets nommés en fonction de l'expression PageName
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.
J'ai trouvé un moyen simple de contourner cela en 2005. Voici mes étapes:
=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).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
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
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.