Générer un fichier Excel à la volée et l'envoyer par e-mail à partir d'une page ASP.
Générer un fichier Excel à la volée
et l'envoyer par e-mail à partir d'une page ASP.
Sur certains sites de commerce
électronique, les webmasters proposent à leurs membres de recevoir
périodiquement par email des informations classées dans un fichier Excel. Cet
exemple vous montre comment utiliser ASP (code Vbscript) pour générer un fichier
Excel et l'envoyer par courriel à vos membres. Les informations sont issues
d'une base de données et le résultat de la requête de tri est stocké dans un
fichier sur le serveur qui est ensuite envoyé en pièces jointes au demandeur via
ASPMail.
Pour être compatible avec Excel le
fichier doit, outre l'extension (.slk), avoir la structure suivante:
ID;PWXL;N;E Début du codage
C;Y1;X1;K"Libellé" les guillemets seront codés avec chr(34)
C;Y1;X2;Knombre
... etc
E Fin du codage
classement-excel.asp
<% ' Script de Dom -
' actif sur http://www.domchauvet.com/delta
Action = Left(UCase(Request("Action")),5)
If Action = "RECEV" Then ' Arrivée du formulaire
' 1. Mémorisation de l'adresse E-mail dans un cookie
Set OBJdbConnection = Server.CreateObject("ADODB.Connection")
OBJdbConnection.Open "nom_de_la_base"
SQLQuery = "SELECT nom,prénom,total,rang FROM nom_de_la_table " _
& "WHERE total > 0 ORDER BY total DESC "
Set RS = OBJdbConnection.Execute(SQLQuery)
' 3. Création du fichier
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
dim dir : dir = Server.MapPath("/images")
set inF = FSO.CreateTextFile(dir & "\" & Request("type"))
' Fichier au format Excel (.slk) if right(Request("type"),3)="slk" then
inF.writeLine"ID;PWXL;N;E" ' Début du codage excel ' chr (34) remplace les guillements à la suite de l'instruction inF.writeLine"C;Y1;X1;K"&chr(34)&("PLACE")&chr(34)
inF.writeLine"C;Y1;X2;K"&chr(34)&("NOM")&chr(34)
inF.writeLine"C;Y1;X3;K"&chr(34)&("PRENOM")&chr(34)
inF.writeLine"C;Y1;X4;K"&chr(34)&("POINTS")&chr(34)
i=2 ' Affichage à partir de la ligne 2 While Not rs.eof
inF.writeLine"C;Y"&(""&i&";X1;K")&(rs("Rang"))
inF.writeLine"C;Y"&(""&i&";X2;K")&chr(34)&(rs("Nom"))&chr(34)
inF.writeLine"C;Y"&(""&i&";X3;K")&chr(34)&(rs("Prénom"))&chr(34)
inF.writeLine"C;Y"&(""&i&";X4;K")&(rs("TOTAL"))
i=i+1
Rs.MoveNext
wend
inF2.writeLine"E" ' Fin du codage excel
' ou fichier au format texte (.txt) else
inF.writeLine("Rang"&";"&"Nom"&";"&"Prénom"&";"&"Points")
While Not rs.eof
inF.writeLine(rs("Rang")&";"&rs("Nom")&";"&rs("Prénom")&";"&rs("TOTAL")&";")
Rs.MoveNext
wend
end if
inF.close
' 4. Fermeture de la connexion à la BD
RS.close : set RS = nothing
OBJdbConnection.close : set OBJdbConnection = nothing
' 5. Envoi du fichier par ASPMail
Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
Mailer.FromName = "DomChauvet"
Mailer.FromAddress= "
"
Mailer.RemoteHost = "SMTP.domchauvet.com"
Mailer.AddRecipient Request("Mail"), Request("Mail")
Mailer.AddAttachment dir&"\"&Request("type")
Mailer.Organization = "Site Deltaplane"
Mailer.Subject = "Le classement des sélectives"
strBody = "Voici le classement des sélectives à ce jour." & VbCrLf
strBody = strBody & "Nom du fichier joint "&Request("type")&"." & VbCrLf
strBody = strBody & "Amicalement. DomChauvet" & VbCrLf
Mailer.BodyText = strBody
if Mailer.SendMail then
msg="Félicitations : Le classement est dans votre boite aux lettres" _
& "<br>Fichier : "&Request("type")
else
msg="Problème d'envoi<br>"&Mailer.Response
end if
End If %>
<html><head><title>Classement national</title>
</head><body>
<%if msg="" then%>
<p align="center"><b>Obtenir tout de suite ce <u>classement complet</u>
dans un fichier "Excel" ou "texte"</b></p>
<form method="POST" action="classement_excel.asp">
<table border="0" cellspacing="1" width="500">
<tr>
<td>Recevez ce fichier en indiquant simplement</td>
</tr><tr>
<td><select size="1" name="type">
<option value="classement_excel.slk">excel</option>
<option value="classement_texte.txt">texte</option>
</select> le type de fichier choisi</td>
</tr><tr>
<td><input type="text" name="Mail" size="22"
value="<%=Request.Cookies("deltamail")%>"> votre e-mail</td>
</tr><tr>
<td><input type="submit" value="Recevoir" name="Action">
un seul clic suffit ...</td>
</tr>
</table>
</form>
<p>La version excel (fichier *.slk) est compatible avec Excel</p>
<p>La version texte (fichier *.txt) est compatible avec Word, Works, Word Pad etc....</p>
Cet ouvrage montre comment tirer parti de l'offre Java-XML d'Oracle,
tant au niveau de la base de données Oracle8i (drivers JDBC, conteneur
EJB, ORB Corba, XSQL...), que des produits associés, outils XML-XSLT,
JDeveloper, Oracle9i Application Server, etc.
L'ouvrage insiste tout particulièrement sur les problèmes d'intégration
de ces technologies, de design des architectures et de scalabilité des
applications. II est illustré de nombreux exemples de code et de deux
études de cas, une application e-commerce construite à l'aide d'EJB et
un serveur de documents XML multithread.
Titre : Java, XML et Oracle
Éditeur : Eyrolles
Collection : Solutions Développeurs
Parution : mars 2001
634 pages
ISBN : 2-212-09149-4
EAN13 : 9782212091496