Comment obtenir des feuilles Excel nommées lors de l'exportation depuis SSRS
-
09-09-2019 - |
Question
Chaque fois qu'un rapport d'une seule page est exporté vers Excel, la feuille Excel est nommée par le nom du rapport.Si un rapport comporte plusieurs pages, les feuilles sont nommées feuille1, feuille2,....Existe-t-il un moyen de spécifier des noms de feuilles dans SSRS 2005 ?
solution:J'ai trouvé ceci après quelques recherches sur Google :Modification des noms de feuilles dans SQL Server RS Excel :QnD XSLT
Je vais essayer et publier une mise à jour si cela fonctionne.
La solution
Nécromancie, juste au cas où tous les liens deviendraient sombres :
Ajouter un groupe à votre rapport
Il est également conseillé de définir ici l'ordre de tri de l'expression de groupe, afin que les onglets soient triés par ordre alphabétique (ou comme vous le souhaitez).
- « Zeilengruppe » signifie « Groupe cible »
- « Gruppeneigenschaften » signifie « Propriétés du groupe »
Définir le saut de page dans les propriétés du groupe
- « Seitenumbruche » signifie « Saut de page »
- « Zwischen den einzelnen Instanzen einer Gruppe » signifie « Entre les instances individuelles d'un groupe »
Vous devez maintenant définir le
PageName
du Tablix Membre (groupe), PAS lePageName
du Tablix lui-même.
Si vous avez le bon objet, il dira "Tablix Membre" (Tablix-Element en allemand) dans la zone de titre de la grille des propriétés.Si ce n'est pas le bon objet, il dira seulement "table/tableau" (sans membre) dans la zone de titre de la grille de propriétés.Note:Si vous obtenez le tableau au lieu du membre du tableau, il mettra le même nom d'onglet dans chaque onglet, suivi d'un
(tabNum)
!Si cela se produit, vous savez maintenant quel est le problème.
Autres conseils
Pour exporter vers différentes feuilles et utiliser des noms personnalisés, à partir de SQL Server 2008 R2, cela peut être fait en utilisant une combinaison de regroupement, de sauts de page et de Nom de la page propriété du groupe.
Alternativement, s'il ne s'agit que d'une seule feuille à laquelle vous souhaitez donner un nom spécifique, essayez la NomPageInitial propriété sur le rapport.
Pour une explication plus détaillée, regardez ici : http://blog.hoegaerden.be/2011/03/23/where-the-sheets-have-a-name-ssrs-excel-export/
Dans SSRS 2008 R2, utilisez Nom de la page propriété du groupe de pages :http://bidn.com/blogs/bretupdegraff/bidn-blog/234/new-features-of-ssrs-2008-r2-part-1-naming-excel-sheets-when-exporting-reports
Pour ajouter des noms d'onglets lors de l'exportation vers Excel, j'ai utilisé la méthode suivante :
- Dans la fenêtre de conception du rapport, sélectionnez l'objet Tableau.
- Ouvrez la fenêtre des propriétés de l'objet tableau.
- Ajoutez le nom de l'onglet requis au
PageName
propriété. - Exécuter le rapport
- Exportez le rapport vers Excel.
- Le nom de la feuille de calcul est désormais le même que celui de
PageName
propriété de l’objet tableau.
Placez le nom de l'onglet sur l'en-tête de la page ou groupez TableRow1 dans votre rapport afin qu'il apparaisse en position "A1" sur chaque feuille Excel.Exécutez ensuite 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
Il n'y a pas de moyen direct.Soit vous exportez du XML, puis vous corrigez un XSLT pour le formater correctement (c'est la manière la plus difficile).Un moyen plus simple consiste à rédiger plusieurs rapports sans sauts de page explicites afin que chacun soit exporté dans une seule feuille dans Excel, puis à écrire un script qui fusionnerait pour vous.Quoi qu’il en soit, cela nécessite une étape de post-traitement.
J'ai pu y parvenir en suivant des instructions plus complexes suggérées par Valentino Vranken et Rao, mais voici une approche plus simple, pour un rapport plus simple.Cela placera chaque tableau sur une feuille séparée et les nommera dans Excel.Cela ne semble pas avoir d'effet sur les autres exportations comme PDF et Word.
D'abord dans le Tablix Properties
de vos tableaux sous General
, vérifiez soit Add a page break before or after
, cela divise le rapport en feuilles .
Puis dans chaque tableau , cliquez sur le tableau , puis dans le Grouping
vue, sur le Row Groups
côté, sélectionnez le groupe parent ou le groupe de lignes par défaut, puis dans le Properties
voir sous Group -> PageBreak
ensemble BreakLocation
à None
et PageName
au nom de la feuille.
La méthode Rectangulaire
Le moyen le plus simple et le plus fiable que j'ai trouvé pour réaliser des feuilles de calcul/sauts de page consiste à utiliser l'outil rectangle.
Regroupez votre page dans des rectangles ou dans un seul rectangle qui remplit la page dans un sous-rapport, comme suit :
Le moyen le plus rapide que j'ai trouvé pour placer le rectangle est de le dessiner autour des objets que vous souhaitez placer dans le rectangle.
Faites un clic droit et dans le menu de mise en page, renvoyez le rectangle vers l'arrière.
Sélectionnez tous vos objets et faites-les glisser légèrement, mais assurez-vous qu'ils atterrissent au même endroit où ils se trouvaient.Ils seront désormais tous dans le rectangle.
Dans les propriétés du rectangle, vous pouvez définir le saut de page pour qu'il se produise au début ou à la fin du rectangle et le nom de la page peut être basé sur une expression.
Les feuilles de calcul porteront le même nom que le nom de la page.
Les noms en double auront un suffixe numérique entre parenthèses.
Note: Assurez-vous que les noms sont des noms de feuille de calcul valides.
Vous pouvez utiliser -sed- et -grep- pour remplacer ou écrire dans l'en-tête XML de chaque fichier en spécifiant le nom de feuille souhaité, par exemple, sheetname1, entre toute occurrence des balises :
<Sheetnames>?sheetname1?</Sheetnames>
Bien que cette utilisation de la propriété PageName sur un objet vous permette en fait de personnaliser les noms de feuilles exportées dans Excel, sachez qu'elle peut également mettre à jour les définitions d'espace de noms de votre rapport, ce qui pourrait affecter la capacité de redéployer le rapport sur votre serveur.
J'avais un rapport auquel j'appliquais cela dans BIDS et il mettait à jour mon espace de noms de 2008 à 2010.Lorsque j'ai essayé de publier le rapport sur un serveur de rapports 2008R2, j'ai reçu une erreur indiquant que l'espace de noms n'était pas valide et j'ai dû tout rétablir.Je suis sûr que ma situation est peut-être unique et que cela n'arrivera peut-être pas toujours, mais j'ai pensé que cela valait la peine d'en parler.Une fois que j'ai trouvé le problème, cette page a aidé à rétablir l'espace de noms (il y a des balises qui doivent également être supprimées en plus de réinitialiser l'espace de noms) :