SSRS – Erreur Export Excel – Caractère XML illégal

J’aime bien SSRS ! Certains puristes de la BI pensent que SSRS est amené à disparaitre ou à être beaucoup moins utilisé mais personnellement, je trouve que SSRS est très pratique. Je m’en sers souvent pour générer des fichiers Excel automatiquement.

Je suis tombé régulièrement sur cette erreur lors d’un export d’un rapport en Excel :

ssrs_erreur_export_excel_1

SSRS erreur export excel xml illégal

En fait, cette erreur est lié à des caractères ASCII spécifiques. Peut-être qu’il existe un moyen de contournement plus propre que celui que je vous propose mais je m’en suis sorti en écrivant une méthode VB.net embarquée dans mon rapport SSRS. Voici comment le mettre en place.

Ouvrez la fenêtre Report Properties :

ssrs report propertiesPuis, dans l’onglet Code, collez le script qui supprime les caractères spécifiques :

ssrs_code

Dans le rapport, il convient ensuite d’afficher le texte contenant les caractères spéciaux en utilisant la méthode DelChrChiant.

ssrs_expression

Grâce à cette méthode, mes exports Excel fonctionnent même si les performances sont forcément un peu dégradées.

Voici le code complet :

Public Function DelChrChiant (ByVal s As String) As String
Dim strBuilder As New System.Text.StringBuilder(s)
   strBuilder.Replace(chr(1), "")
   strBuilder.Replace(chr(2), "")
   strBuilder.Replace(chr(3), "")
   strBuilder.Replace(chr(4), "")
   strBuilder.Replace(chr(5), "")
   strBuilder.Replace(chr(6), "")
   strBuilder.Replace(chr(7), "")
   strBuilder.Replace(chr(8), "")
   strBuilder.Replace(chr(9), "")
   strBuilder.Replace(chr(10), "")
   strBuilder.Replace(chr(11), "")
   strBuilder.Replace(chr(12), "")
   strBuilder.Replace(chr(13), " ")
   strBuilder.Replace(chr(14), "")
   strBuilder.Replace(chr(15), "")
   strBuilder.Replace(chr(16), "")
   strBuilder.Replace(chr(17), "")
   strBuilder.Replace(chr(18), "")
   strBuilder.Replace(chr(19), "")
   strBuilder.Replace(chr(20), "")
   strBuilder.Replace(chr(21), "")
   strBuilder.Replace(chr(22), "")
   strBuilder.Replace(chr(23), "")
   strBuilder.Replace(chr(24), "")
   strBuilder.Replace(chr(25), "")
   strBuilder.Replace(chr(26), "")
   strBuilder.Replace(chr(27), "")
   strBuilder.Replace(chr(28), "")
   strBuilder.Replace(chr(29), "")
   strBuilder.Replace(chr(30), "")
   strBuilder.Replace(chr(31), "")
   Return strBuilder.ToString()
End Function

Et vous, comment gérez vous cette problématique ?

This entry was posted in SSRS and tagged .

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Time limit is exhausted. Please reload CAPTCHA.