ASP.NET - CRÉÉ UN FICHIER EXCEL EN DYNAMIQUE (SOUS FORME DE FLUX) AVEC ASP.NET

bleroy Messages postés 2 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 14 novembre 2002 - 14 nov. 2002 à 10:10
alex91270 Messages postés 1 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 12 mars 2009 - 12 mars 2009 à 19:44
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/8935-asp-net-cree-un-fichier-excel-en-dynamique-sous-forme-de-flux-avec-asp-net

alex91270 Messages postés 1 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 12 mars 2009
12 mars 2009 à 19:44
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
12 déc. 2005 à 19:08
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 Membre Dernière intervention 11 décembre 2013 5
12 déc. 2005 à 18:54
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
12 déc. 2005 à 18:47
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 Membre Dernière intervention 11 décembre 2013 5
12 déc. 2005 à 18:30
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
dimkhas Messages postés 14 Date d'inscription mercredi 30 novembre 2005 Statut Membre Dernière intervention 15 février 2006
12 déc. 2005 à 18:14
Bonsoir
ce ke je veux faire réellement c'est générer un fichier txt coté client. Et lui s'il veut il l'enregistre sur son poste ou pas.Mais je ne veux pas que le fichier généré soit enregistré sur mon serveur.
merçi de ton soutien
dimkhas Messages postés 14 Date d'inscription mercredi 30 novembre 2005 Statut Membre Dernière intervention 15 février 2006
12 déc. 2005 à 18:04
Bonsoir
Moi je voulais directement ouvrir le fichier excel. Mais il me propose l'ecran de téléchargement. Aprés le téléchragemenr du fichier je n'arrive pas à l'ouvrir.
Moi je voulais plutôt générer un .txt. il m'affiche le contenu sur le meme formulaire au lieu de créer un fichier txt. je me suis je vais voir si je peux générer un fichier excel mais là aussi il y'a blocage.
Merçi de ton soutien
dimkhas Messages postés 14 Date d'inscription mercredi 30 novembre 2005 Statut Membre Dernière intervention 15 février 2006
12 déc. 2005 à 18:00
Bonsoir
oui j'ai Excel installé sur mon poste mais je ne sais si c'est du a des pbs de droit ou pas
cs_fabrice69 Messages postés 1765 Date d'inscription jeudi 12 octobre 2000 Statut Membre Dernière intervention 11 décembre 2013 5
12 déc. 2005 à 17:48
Bonsoir,
Il faut que Excel soit installé sur votre poste
Cordialement
Romelard Fabrice
dimkhas Messages postés 14 Date d'inscription mercredi 30 novembre 2005 Statut Membre Dernière intervention 15 février 2006
12 déc. 2005 à 17:19
Bonjour
merçi beaucoup de votre, trés simple et facile à comprendre. Mais cependant quand je l'ai intégré dans mon programme pour générer le fichier, soit il me propose directement le téléchargement ou bien il m'affiche un message d'erreur m'indiquant que le contenu ne peut pas être lu.
Pouvez m'aider et me dire à qo=uoi est dû cette erreur.
merçi
cs_fabrice69 Messages postés 1765 Date d'inscription jeudi 12 octobre 2000 Statut Membre Dernière intervention 11 décembre 2013 5
22 août 2005 à 15:45
On insère pas une image mais ajoute une URL pour cette image dans le flux HTML.
Cordialement
Romelard Fabrice
sev622 Messages postés 62 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 12 septembre 2005
22 août 2005 à 15:15
bonne méthode, facile à mettre en place, mais est-il possible d'insérer une image dans le flux ?
bleroy Messages postés 2 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 14 novembre 2002
14 nov. 2002 à 10:10
Attention! L'utilisation de concaténations de chaînes pour monter le tableau devient vite catastrophique... Il faut absolument dans ce genre de cas utiliser un StringBuilder, ou mieux, surcharger Render et utiliser les méthodes de génération d'HTML spécifiques, tellement plus propres. On ne le répètera jamais assez, les chaînes de caractères sont immuables et de nombreuses concaténations sont toujours catastrophiques pour les performances.
Rejoignez-nous