Sql =>exel via asp

Résolu
batoune Messages postés 558 Statut Membre -  
batoune Messages postés 558 Statut Membre -
Bonjour,
j'ai réalisé des pages web en ASP, depuis ces pages, je récupere des données dans une BDD microsoft SQL serveur 2005.
Je voudrais savoir si il etait possible de générer via mes pages ASP un fichier exel qui contiendrait le résultats de ma requete sur la BDD, et si oui, comment faire?
Configuration: Windows XP Internet Explorer 7.0

2 réponses

  1. batoune Messages postés 558 Statut Membre 96
     
    Bon, suite a diverse recherche j'ai trouver quelque chose qui consiste a ecrire du html et a le transformer en xls a la fin, mais malger tout mes effort j'ai toujours une erreur :

    Erreur d'exécution Microsoft VBScript error '800a01a8'

    Objet requis: 'System'

    /Sauvegarde.asp, line 50

    mon code est le suivant :
    <%@ LANGUAGE="VBScript" %>
    <%
    Dim serverAdresse	 'adresse du serveur
    Dim user	'utilisateur
    Dim password	'mot de passe
    Dim nomBase 	'nom de la base a utiliser
    Dim Maconnexion
    Dim conn
    Dim nbcol
    Dim Temp 'une chaine de caractere
    
    %>
    
    <%
    'On ce connecte a la base de donnees
    'Parametre de connection a la base			
    serverAdresse = "blabla\blibli"      'adresse du serveur
    user = "leLogin"		 'utilisateur
    password = "lePassword"	  'mot de passe
    nomBase = "resultats"	 'nom de la base a utiliser
    
    'Ouverture de la connection
    Set Maconnexion = Server.CreateObject("ADODB.Connection")
    conn = "driver={SQL Server};server="& serverAdresse &";db=" & nomBase & ";user id=" & user & ";pwd=" & password ' & ";option=16386"
    Maconnexion.open conn
    
    set nbcol = server.CreateObject("ADODB.Recordset")'on crer l'objet recordset
    nbcol.open "SELECT nomTest,etat,plageHoraire FROM resultats_tests WHERE CAST(FLOOR(CAST(laDate AS FLOAT)) AS DATETIME) = '20090519' AND environnement = 'Maison'", Maconnexion, 3, 3, 1 nbcol.movefirst'on ce place sur le 1ere enregistrement du recordset
    Temp = Temp &"<TABLE BORDER=1><TR>"
    Temp = Temp &"<TD><B>Fonction</B></TD>"
    Temp = Temp &"<TD><B>Etat</B></TD>"
    Temp = Temp &"<TD><B>Plage Horaire</B></TD>"
    Temp = Temp &"</TR>"
    DO while Not nbcol.EOF 'tant que on est pas a la fin des enregistrements
    	Temp = Temp &"<TR>"
    	Temp = Temp &"<TD>" & nbcol("NomTest") & "</TD>"
    	Temp = Temp &"<TD>" & nbcol("etat") & "</TD>"
    	Temp = Temp &"<TD>" & nbcol("plageHoraire") & "</TD>"
    	Temp = Temp &"</TR>"
    	nbcol.movenext	'on pas a l'enregistrement suivant
    LOOP	'fin de la boucle
    	nbcol.Close	'on referme l'objet recordset
    Set nbcol=Nothing	'on le met a rien pour liberer de la memoire
    Maconnexion.Close			'Déconnexion de SQL une fois tout les résultats affiché
    Set Maconnexion = Nothing 	'Affectation a rien de l'objet Maconnexion 
    Temp = Temp &"</TABLE>"
    HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Default
    HttpContext.Current.Response.ContentType = "application/vnd.ms-excel"
    HttpContext.Current.Response.Write(Temp)
    %>
    


    l'erreur est sur la ligne "HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Default"

    Voila, j'espere que quelqu'un pourra m'aider
    merci d'avance
    0
  2. batoune Messages postés 558 Statut Membre 96
     
    Bon une fois encore j'ai trouver ma reponse tout seul,
    Alors vu que sa ma bien souler tout sa, je la met ici des fois que sa interresserais quelqu'un :

    Dans une premiere page .asp, je fais :

    en premiere ligne :
    <%@ LANGUAGE="VBScript" %>

    déclaration des variables :
    <%
    Dim serverAdresse 'adresse du serveur
    Dim user 'utilisateur
    Dim password 'mot de passe
    Dim nomBase 'nom de la base a utiliser
    Dim Maconnexion 'objet connexion
    Dim conn
    Dim nbcol un recordset
    %>

    entete de page html :
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
    <head>
    <title>nomdemapage</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <link rel="stylesheet" media="screen" type="text/css" title="Design" href="css.css" />
    </head>
    <body>

    On ce connecte a la base de données et on fait notre requete sql:
    <%
    'Parametre de connection a la base
    serverAdresse = "blabla" 'adresse du serveur
    user = "user" 'utilisateur
    password = "password" 'mot de passe
    nomBase = "maBase" 'nom de la base a utiliser

    'Ouverture de la connection
    Set Maconnexion = Server.CreateObject("ADODB.Connection")
    conn = "driver={SQL Server};server="& serverAdresse &";db=" & nomBase & ";user id=" & user & ";pwd=" & password
    Maconnexion.open conn

    'requete sql
    set nbcol = server.CreateObject("ADODB.Recordset")'on crer l'objet recordset
    nbcol.open "SELECT nom,prenom,lieu FROM maTable WHERE nom = 'Martin' AND lieu = 'bureau' ORDER BY nom, prenom", Maconnexion, 3, 3, 1 'on execute la requete sql

    On creer un tableau html dans la variable Temp a partir des lignes de la requete (le recordset):
    nbcol.movefirst'on ce place sur le 1ere enregistrement du recordset
    Temp = Temp &"<TABLE BORDER=1><TR>"
    Temp = Temp &"<TD><B>Fonction</B></TD>"
    Temp = Temp &"<TD><B>Etat</B></TD>"
    Temp = Temp &"<TD><B>Plage Horaire</B></TD>"
    Temp = Temp &"</TR>"
    DO while Not nbcol.EOF 'tant que on est pas a la fin des enregistrements
    Temp = Temp &"<TR>"
    Temp = Temp &"<TD>" & nbcol("nom") & "</TD>"
    Temp = Temp &"<TD>" & nbcol("prenom") & "</TD>"
    Temp = Temp &"<TD>" & nbcol("lieu") & "</TD>"
    Temp = Temp &"</TR>"
    nbcol.movenext 'on pas a l'enregistrement suivant
    LOOP 'fin de la boucle
    nbcol.Close 'on referme l'objet recordset
    Set nbcol=Nothing 'on le met a rien pour liberer de la memoire
    Temp = Temp &"</TABLE>"

    On crer un formulaire avec un bouton qui appel une autre page (ici excel.asp) et un champ cacher avec la variable Temp comme valeur :
    response.write ("<form method='post' action='excel.asp'> <input type ='hidden' value='"&Temp&"' name='tempp' id='tempp'></br> <input type='submit' value='Exportez' /></form>")

    on termine notre premiere page en refermant les balise encore ouverte:
    %>
    </body>
    </html>

    Ensuite dans la page excel.asp, j'ai juste 2 lignes :
    <% Response.ContentType = "application/vnd.ms-excel" %> 'pour dire a IE que je renvoie un fichier excel et pas une page web
    <% response.write (Request.Form("tempp"))%> 'on "affiche" juste le contenu de la variable Temp qui contient en fait le tableau html créer a la page precedente

    Et voila, si excel est instaler sur votre PC client, IE vous proposera d'ouvrir ou de sauvegarder un fichier excel.xsl

    Voila....
    bonne chance a tous....
    0