Asp.net - créé un fichier excel en dynamique (sous forme de flux) avec asp.net

Soyez le premier à donner votre avis sur cette source.

Snippet vu 24 540 fois - Téléchargée 34 fois

Contenu du snippet

L'utilisation de fichier Excel est générale dans le monde professionnel et les export Excel sont donc très courantes dans ces applications.
Voila donc un exemple pour générer un fichier excel à la volée sous ASP.NET (VB.NET).

Source / Exemple :


Dim lCnx As New accConnexionSQL(LaChaineDeConnexion)
' Basé sur la classe de connexion MySQL précédement donnée

 lCnx.Open()
 Try
   mTable = ChargeListe(lCnx)
   Dim MaLigne As DataRow
   Dim Temp As String
   Dim i As Integer = 0

   Temp = "<TABLE BORDER=1><TR>"
   Temp &= "<TD><B>Nom Prenom</B></TD>"
   Temp &= "<TD><B>Service</B></TD>"
   Temp &= "<TD><B>Localite</B></TD>"
   Temp &= "<TD><B>Telephone</B></TD>"
   Temp &= "<TD><B>Poste</B></TD>"
   Temp &= "<TD><B>Email</B></TD>"
   Temp &= "</TR>"
   For Each MaLigne In mTable.Rows
     Temp &= "<TR>"
     Temp &= "<TD>" & MaLigne("NomPrenom") & "</TD>"
     Temp &= "<TD>" & MaLigne("Service") & "</TD>"
     Temp &= "<TD>" & MaLigne("Localite") & "</TD>"
     Temp &= "<TD>" & MaLigne("Telephone") & "</TD>"
     Temp &= "<TD>" & MaLigne("Poste") & "</TD>"
     Temp &= "<TD>" & MaLigne("Email") & "</TD>"
     Temp &= "</TR>"
   Next
   Temp &= "</TABLE>"
   Temp = ZfStringUtil.SupprimeAccent(Temp)
   
   HttpContext.Current.Response.ContentType = "application/vnd.ms-excel"
   HttpContext.Current.Response.Write(Temp)
 Finally
   lCnx.Close()
 End Try

Conclusion :


A noté que les accents et caractères spéciaux posent problème, donc le remplacement est a prévoir de ces caractères (d'ou l'utilisation de ZfStringUtil.SupprimeAccent)
C'est un des différents modes de génération de fichier Excel.

F___

A voir également

Ajouter un commentaire

Commentaires

alex91270
Messages postés
1
Date d'inscription
jeudi 22 mai 2003
Statut
Membre
Dernière intervention
12 mars 2009
-
Le "Response.ContentType = "application/vnd.ms-excel"" sert à tromper le navigateur sur la nature du contenu que le serveur lui renvoit.

Si l'on met ce code derriere un boutton dans une page asp, la boutton provoque un postback, le serveur renvoit sa page au client qui la voit comme un fichier excel et le télécharge, mais excel ne peut pas l'ouvrir, car si on édite ce fichier avec notepad, on voit que le fichier XLS contient :
1) les données que l'on a rajouté avec le response.write
2) L'intégralité du code de la page ASP.

Alors voilà comment j'ai fait:
- Sur ma page de départ, derrière mon boutton, je stocke dans une variable de session les données qui devront composer mon fichier excel, puis j'appelle une page "export.aspx" toute vide, qui contient uniquement dans son pageload le response.write / response.contenttype.

Voir ci-dessous:

Derriere le bouton de ma page:

Temp = "\"
Temp &= \"Nom Prenom, \"
Temp &= \"\"
Temp &= \"----
\"
Temp &= \"" & MaLigne("NomPrenom") & ", \"
Temp &= \"\"
Temp &= "
"

session("exptmp") = temp
response.redirect ("export.aspx")

Dans export.aspx:

<script runat="server">

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Response.Write(Session("exptmp"))
Response.ContentType = "application/vnd.ms-excel"
End Sub
</script>


Certainement d'autres facons de faire, en tous cas celle-ci marche.
dimkhas
Messages postés
14
Date d'inscription
mercredi 30 novembre 2005
Statut
Membre
Dernière intervention
15 février 2006
-
Bonsoir
Ce k'on veut c'est générer directement un fichier txt.
Voici le code qu' on a :
Response.ContentType = "text/plain"
Response.Write(Temp)
Mais il ne nous ouvre pas un fichier txt.
Peux tu nous aider là dessus.
merçi
cs_fabrice69
Messages postés
1765
Date d'inscription
jeudi 12 octobre 2000
Statut
Modérateur
Dernière intervention
11 décembre 2013
4 -
Il y a plusieurs content type suivant les versions d'Excel, vous pouvez en trouver une liste ici, à tester dans votre cas :
- http://www.henri-ruch.ch/ASP/Type_contenu/type_contenu.asp

Fabrice
dimkhas
Messages postés
14
Date d'inscription
mercredi 30 novembre 2005
Statut
Membre
Dernière intervention
15 février 2006
-
Bonsoir
Peut être donc on a un pb de configuration.Est ce ke tu peux nous aider à configurer les Mime ContentType correctement dans notre poste.
Cordialement
cs_fabrice69
Messages postés
1765
Date d'inscription
jeudi 12 octobre 2000
Statut
Modérateur
Dernière intervention
11 décembre 2013
4 -
Bonsoir,

Ce type de demande correspond tout à fait à ce que fait ce script. Il propose à l'utilisateur de télécharger le fichier généré.
Dans le cas ou le poste client a les Mime ContentType correctement configurés, l'ouvre automatiquement.
Cordialement
Romelard Fabrice

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.