Créer fichier excel avec ADO
Techniques
Cette section permet de regrouper un ensemble de techniques ou de scripts qui ont l'originalité d'arriver à résoudre une difficulté avec le moindre effort ou qui sont particulièrement efficaces...
Techniques / Excel / Générer des fichiers excel avec ADO (2)
- Accéder aux fichiers Excel avec A.D.O. :
Une des méthodes les plus efficaces qu'il reste pour générer gratuitement des fichiers Excel est de passer
par l'A.D.O.. Autrement dit, un fichier Excel modèle peut être créé et installer sur le serveur, ASP pourra ensuite l'interroger, le modifier
comme s'il s'agissait d'une base de données via un accès ADO.
Nous pouvons trouvés plusieurs avantages à cette méthode :
- Les fichiers générés ne seront pas stockés sur le disque du serveur et supprimés aussitôt après utilisation.
- L'installation de l'application Excel n'est nullement requise sur le serveur. Il y a juste besoin de la bibliothèque ADO au moins 2.5 pour quelle permette l'utilisation d'ADODB.Stream
Dans l'exemple suivant, un fichier excel nommé mon_template.xls est créé en vue de servir de modèle. Afin de pouvoir effectuer les requêtes d'update, une zone a été définie dans le fichier Excel. Pour cela il vous suffit d'ouvrir votre fichier, de sélectionner le nombre de colonnes correspondant au nombre de champ de votre base que vous allez y inclure, et le nombre de lignes adéquats. Ensuite il faut définir la zone nommé : Menu insertion/Nom/Définir... Dans l'exemple suivant la zone a été nommée "xls_colonne".
<% Response.Expires = -2000 Response.Buffer = TRUE '--- Créé un fichier temporaire Dim path path=Server.MapPath(".") Dim fs, file Set fs=Server.CreateObject("Scripting.FileSystemObject") file = path & "\tmp\" & fs.GetTempName fs.CopyFile path & "\templates\mon_template.xls", file '--- Modifier le fichier excel Set oConn = Server.CreateObject("ADODB.Connection") oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & file & _ ";Extended Properties=""Excel 8.0;HDR=NO;""" Dim oProdConn, oProdRS Set oProdConn = Server.CreateObject("ADODB.Connection") Set oProdRS = Server.CreateObject("ADODB.Recordset") oProdConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;"& _ " Data Source=" & _ path & "\ma_base.mdb" 'Nous récupérons les données contenues dans matable 'depuis la base Access oProdRS.Open "SELECT * FROM matable", oProdConn Dim oRS Set oRS = Server.CreateObject("ADODB.Recordset") oRS.Open "Select * from xls_colonne", oConn, 1, 3 ' Rappel : 1=adOpenKeyset, 3=adLockOptimistic Do Until oProdRS.EOF oRS.AddNew For i = 0 To 2 oRS.Fields(i).Value = oProdRS.Fields(i).Value Next oRS.Update oProdRS.MoveNext Loop oProdRS.Close Set oProdRS = Nothing oProdConn.Close Set oProdConn = Nothing oConn.Close Set oConn = Nothing '--- Envoyer le flux de sortie au '--- navigateur en définissant le type MIME Response.ContentType = "application/vnd.ms-excel" Dim vntStream Set oMyObject = Server.CreateObject("ADODB.Stream") oMyObject.Type = 1 'adTypeBinary oMyObject.Open oMyObject.LoadFromFile file vntStream = oMyObject.Read Response.BinaryWrite(vntStream) '--- Suppimer le fichier temporaire '--- et les références. oMyObject.Close fs.DeleteFile file Set oMyObject = Nothing Set fs = Nothing Response.End %>
Générer des fichiers excel à la volée avec ADO (2) >> Page suivante
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'dypso'@'172.20.245.55' (using password: YES) in /mnt/110/sdb/3/1/dypso/include/tools.php on line 106
Impossible de se connecter : Access denied for user 'dypso'@'172.20.245.55' (using password: YES)