begin process at 2012 05 27 06:59:34
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Chaînes de caratères

 > LECTURE ET AFFICHAGE D'UN FICHIER AVEC DÉLIMITEUR (TYPE CSV AVEC ;).

LECTURE ET AFFICHAGE D'UN FICHIER AVEC DÉLIMITEUR (TYPE CSV AVEC ;).


 Information sur la source

Note :
4 / 10 - par 5 personnes
4,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Chaînes de caratères Niveau :Initié Date de création :24/05/2002 Date de mise à jour :24/05/2002 09:17:21 Vu :18 646

Auteur : Mercury

Ecrire un message privé
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

 Description

Ce code permet simplement d'afficher le contenu de n'importe quel fichier de type CSV (avec un ';' ou autre comme séparateurs de champs) dans un tableau.

Le code est suffisament commenté pour comprendre le fonctionnement et éventuellement le personnaliser.

Source

  • <%
  • 'Nom du fichier à traiter
  • csv_to_read="fichier.csv"
  • 'Ouverture du fichier.
  • set fso = createobject("scripting.filesystemobject")
  • set act = fso.opentextfile(server.mappath(csv_to_read))
  • '============================================================
  • 'ETAPE 1 :
  • 'TRAITEMENT DE LA PREMIERE LIGNE : nom des champs.
  • '(Supprimer cette partie si pas nom de champs en 1er ligne).
  • '============================================================
  • 'Lecture du fichier.
  • imported_text = act.readline
  • 'Suppression des doubles quotes.
  • imported_text = replace(imported_text,chr(34),"")
  • 'Suppression des retours à ligne et ajout d'un ";".
  • imported_text = replace(imported_text,chr(13),";")
  • 'Traitement du nom des champs.
  • split_text=split(imported_text,";")
  • num_imported=ubound(split_text)+1
  • '============================================================
  • '============================================================
  • 'ETAPE 2 :
  • 'TRAITEMENT DU RESTE DU FICHIER : les valeurs des champs
  • '============================================================
  • 'Lecture du fichier.
  • total_imported_text = act.readall
  • 'Suppression des doubles quotes.
  • total_imported_text = replace(total_imported_text,chr(34),"")
  • 'Si valeur du champ vide (;"";), on ajoute "-".
  • total_imported_text = replace(total_imported_text,";;",";-;")
  • 'Traitement du nom des champs.
  • total_split_text=split(total_imported_text,";")
  • total_num_imported=ubound(total_split_text)
  • '============================================================
  • %>
  • <table width="100%">
  • <tr>
  • <%
  • '=================================================================
  • 'Création des cellules du tableau pour affichage du nom des champs
  • For table = 0 To num_imported -1
  • %>
  • <td width="<% response.write 100/(num_imported) 'largeur auto de la cellule %>%"><font face="Verdana" size="1">
  • <b><%= split_text(count) %></b>
  • </font></td>
  • <%
  • count=count+1
  • Next
  • '=================================================================
  • %>
  • </tr>
  • <tr>
  • <%
  • 'Remise à zéro du compteur
  • count=0
  • ' Détermine le nombre de colonne pour le fichier.
  • For tablea = 0 To (total_num_imported/ (num_imported)-1)
  • %>
  • <%
  • '=================================================================
  • 'Création des cellule pour les colonne du fichier.
  • For table = 0 To num_imported -1
  • %><td width="<%= 100/(num_imported) %>%"><font face="Verdana" size="1">
  • <%= total_split_text(count)
  • %>
  • </font></td>
  • <%
  • count = count + 1
  • Next
  • '=================================================================
  • %>
  • </tr>
  • <%
  • Next
  • %>
  • </table>
  • </FONT>
<%
'Nom du fichier à traiter
csv_to_read="fichier.csv"

'Ouverture du fichier.
set fso = createobject("scripting.filesystemobject")
set act = fso.opentextfile(server.mappath(csv_to_read))

'============================================================
'ETAPE 1 :
'TRAITEMENT DE LA PREMIERE LIGNE : nom des champs.
'(Supprimer cette partie si pas nom de champs en 1er ligne).
'============================================================
'Lecture du fichier.
imported_text = act.readline

'Suppression des doubles quotes.
imported_text = replace(imported_text,chr(34),"")

'Suppression des retours à ligne et ajout d'un ";".
imported_text = replace(imported_text,chr(13),";")

'Traitement du nom des champs.
split_text=split(imported_text,";")
num_imported=ubound(split_text)+1
'============================================================



'============================================================
'ETAPE 2 :
'TRAITEMENT DU RESTE DU FICHIER : les valeurs des champs
'============================================================
'Lecture du fichier.
total_imported_text = act.readall

'Suppression des doubles quotes.
total_imported_text = replace(total_imported_text,chr(34),"")

'Si valeur du champ vide (;"";), on ajoute "-".
total_imported_text = replace(total_imported_text,";;",";-;")

'Traitement du nom des champs.
total_split_text=split(total_imported_text,";")
total_num_imported=ubound(total_split_text)
'============================================================

%>
<table width="100%">
<tr>
<%
'=================================================================
'Création des cellules du tableau pour affichage du nom des champs 
For table = 0 To num_imported -1
%>
	<td width="<% response.write 100/(num_imported) 'largeur auto de la cellule %>%"><font face="Verdana" size="1">
	<b><%= split_text(count) %></b>
	</font></td>
<% 
	count=count+1
Next
'=================================================================
%>
</tr>
<tr>
<%
'Remise à zéro du compteur
count=0
' Détermine le nombre de colonne pour le fichier.
For tablea = 0 To (total_num_imported/ (num_imported)-1)
%>
<%
'=================================================================
'Création des cellule pour les colonne du fichier.
For table = 0 To num_imported -1
%><td width="<%= 100/(num_imported) %>%"><font face="Verdana" size="1">
<%= total_split_text(count) 
%>
</font></td>
<% 
count = count + 1
Next 
'=================================================================
%>
</tr>
<% 
Next
%>
</table>
</FONT>

 Conclusion

Je mettrai en fin de journée un code qui permettra d'importer le contenu de ce type de fichier dans une base de données.


 Sources de la même categorie

FONCTION : REMPLACER LES CARRACTÈRES ACCENTUÉS PAR LEUR ÉQUI... par promeythey
CHERCHER ET REMPLACER UN MOT DANS UN FICHIER TEXTE par roro59650
CONVERSION CARACTÈRES UTF-8 VERS FRANÇAIS par EricDD
FONCTION UCFIRST EN ASP par DesignerCreator
Source .NET (Dotnet) FONCTIONS DE VÉRIFICATION DE LA SYNTAXE D'UNE CHAINE par vladam

Commentaires et avis

Commentaire de alwaha le 27/05/2002 16:37:39

quand il n ' y a pas de nom de champ en premiere ligne, ca ne fonctionne pas  et voila l'erreur affichee:

Erreur d'exécution Microsoft VBScript error '800a000b'
Division par zéro

Commentaire de Mercury le 27/05/2002 17:25:42

alwaha=&gt; Supprime simplement le code suivant (celà supprime la tentative d'affichage des champs de la première ligne) :

&lt;tr&gt;
&lt;%
'=================================================================
'Création des cellules du tableau pour affichage du nom des champs
For table = 0 To num_imported -1
%&gt;
    &lt;td width="&lt;% response.write 100/(num_imported) 'largeur auto de la cellule %&gt;%"&gt;&lt;font face="Verdana" size="1"&gt;
    &lt;b&gt;&lt;%= split_text(count) %&gt;&lt;/b&gt;
    &lt;/font&gt;&lt;/td&gt;
&lt;%
    count=count+1
Next
'=================================================================
%&gt;
&lt;/tr&gt;

Ton fichier est-il bien du type : champs_1;champs_2;champs_3;champs_4;

Commentaire de SpiderMan le 01/06/2002 19:05:41

Ca  niveau 2 ??!
C meme pas niveau -1. Dommage qu'on peut pas mettre 0/10 comme note. 1/10 et tu devrais etre contant

Commentaire de sirch le 02/06/2002 09:15:53

Pas mal du tout, et c'est plutôt utile. J'utilise beaucoup de fichiers avec séparateurs (issus d'exports de données EXCEL). Un bon 10/10 ;-)

SpiderMan=&gt; Au lieu de critiquer juste pour le plaisir, fais des commentaires constructifs. Je pense que tu n'as rien compris au code, d'où ce messages à 2 balles. Je serais curieux de voir de quoi tu es capable. Apparemment de pas grand chose, puisque tu n'as jamais déposé de source.

Commentaire de VB6Boss le 07/06/2002 22:01:18

Sirch tu devrais faire un peu de theatre pour qu'on te distigue de ton vrai pseudo:Mercury
Tu me le rappelle etrangement par tes commantaires.
Moi aussi je serais curieux de voir de quoi un fameux Sirch est capable de faire a part de se cacher sous d'autres pseudos.
j'espere que le 10/10 que tu t'es mis te rassurera.

Commentaire de Mercury le 08/06/2002 10:27:55

VBKILLER = VB6BOSS = VBNUL ! La chasse est ouverte !
Merci Nix ;-)))

Commentaire de chaieb le 25/02/2003 15:27:20

Je trouve que c'est un peu traditionnelle comme méthode. On peut toustefois se connecter par ODBC ( ODBC pour des Fichier *.txt,*.csv) au fichier CSV. Et manipuler ensuite un recordset, au lieu d'un traitement ligne par ligne de l'objet FILE ("scripting.filesystemobject"). Par exemple on peu utuliser le code suivant pour se connecter via ODBC ua fichier CSV (MonFichier.CSV) :

'--- CSVPATH : le répertoire qui contient "MonFichier.CSV"
'--- STRSOURCEDSN : Chaine de Connexion à notre base de données (MonFichier.CSV)

STRSOURCEDSN = "Provider=Microsoft.Jet.OLEDB.4.0;" &  vbCrLf & _
       "Data Source=" &  CSVPATH & ";" &  vbCrLf & _
       "Extended Properties=""text;HDR=YES;FMT=Delimited""" & vbCrLf

sReq = "select * from [MonFichier.CSV]"
Set oRst= server.CreateObject("ADODB.Recordset")
Set oRst = oSrcCnx.Execute(sReq)


'Ainsi on manipule oRst pour gérer/afficher /consulter les données de notre CSV.

'--- On Peut même utuliser le fichier Schema.ini pour paramétrer le spérateur de notre CSV, le type des données dedans ( Charset,ColType,ColWidth,....)

J'espère bien que c utile pour vous,

A+

Commentaire de Mercury le 25/02/2003 15:36:25

Merci chaieb pour ton exemple. On peut également utiliser la méthode que tu proposes.

Commentaire de chaieb le 25/02/2003 16:40:21

'---------------------------------------------------
'---- Plus de détails sur le Fichier Schema.ini
'---------------------------------------------------
Si on se connecte par ODBC sur un Fichier .txt ou .CSV, à priorie on a besoin de certains paramétrage, à savoir :

1) le Charset : ANSI 1252, 1256,....
2) Le délimiteur des Champs
3) Si la première ligne contient les noms de colonnes ou pas
4) Le nom du fichier CSV en question
5) Le type des Données que l'ODBC récupère ( Integer, string, decimal,....)
6) Formater certaines chaines : exemple formater les dates

==&gt; Ces paramètres ont des valeurs par défaut definis dans la regsitry. Si jamais on veux les changer, on edite un fichier qu'on appelle Schema.ini. L'ODBC, on se connectant au fichier CSV, vérifie l'existance ou pas d'un fichier qui a le nom "schema.in" :
  * S'il existe, alors l'ODBC prend les paramètres qui y sont définis,
  * Sinon, il prend les valeurs par défaut définies au niveau de la    regsitry.

Je vous donne ci-dessous un exemple d'une entrée du fichier schema.ini, que j'ai édité moi même pour paramétrer mon CSV "auteurs.csv" :
[auteurs.CSV]                      ----- Nom du CSV
Format = TabDelimited         ----- Le délimiteur : tabultaion
CharacterSet=1252               ----- Charset : ANSI ( 1252)
ColNameHeader=True           ----- Noms de colonnes sur la 1ère ligne
Col1=ID_AUT Integer Width 4
Col2=NOM Char Width 20
Col3=PRENOM Char Width 20
Col4=Date_N Date

Note : Dans le schema.ini, on peut paramétrer 1-n fichiers .CSV (ou .txt). Pour chaque fichier, on peut ainsi définir, par exemple, des délimiteurs différents pour des fichiers différents. A noter que le fichier "Schema.ini" doit exister sur le même répertoir que les fichier quii y sont définies.

A+

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,452 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales