Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Langages serveur > ASP
ASP Forum sur la programmation ASP. Avant de poster : Cours ASP, FAQ ASP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/10/2007, 16h12   #1
Membre du Club
 
Inscription : juin 2005
Messages : 97
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 97
Points : 56
Points : 56
Par défaut importer fichier CSV

Bonjour,

je cherche un exemple de code asp pour importer un fichier CSV

je cherche à gérer les cas tordus où les champs texte peuvent contenir un point-virgule, des guillemets ou encore un CR

un peu comme ci-dessous

champ1;champ2;champ3
"champ1;suite";champ2;"champ3
suite champ3"
champ1;champ2;"champ3""suite"
ddeee est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 17h06   #2
Membre confirmé
 
Inscription : juin 2005
Messages : 412
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2005
Messages : 412
Points : 261
Points : 261
Envoyer un message via MSN à mael94420
Techniquement, ca semble impossible, sauf si tout t'es champs sont formaté selon une norme défini, j'entend par la qu'il commence tous par la même lettre, ou qu'il font tous la même longueur...
Auttrement, si tu a acces à la source xls, la seul solution est de remplacer tout t'es ; par autre choses qui n'interragira pas avec le csv.
__________________
http://mael-decoster.fr
Développeur indépendant d'applications web
http://www.easy-media.fr
mael94420 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 17h40   #3
Membre du Club
 
Inscription : juin 2005
Messages : 97
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 97
Points : 56
Points : 56
je n'ai trouvé aucun exemple complet par rapport à mon problème

je vais donc devoir coder tout cela moi meme (je voulais gagner du temps)

je vais parser le texte caractere par caractere, dès lors que je tombre sur un guillemet je sais que je dois traiter de façon spéciale les 3 caracteres suivant : " (ascii 34), CR (ascii 13) et ; (ascii 59) jusqu'au guillemet suivant

je posterai mon code ici si qqn est interessé
ddeee est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 18h55   #4
Membre confirmé
 
Avatar de gderenne
 
Inscription : juillet 2007
Messages : 248
Détails du profil
Informations personnelles :
Âge : 39

Informations forums :
Inscription : juillet 2007
Messages : 248
Points : 217
Points : 217
Salut,

Dans ta source, il n'y a que des champs et des "suite". Cela représente réellement ta source ? Il n'y a pas de données à attribuer à ces champs ?

Tu veux importer dans quoi ?
__________________
Cordialement,
Gil DERENNE
Ingénieur du Son
gderenne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 20h34   #5
Membre habitué
 
Développeur informatique
Inscription : octobre 2003
Messages : 448
Détails du profil
Informations personnelles :
Âge : 30

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : octobre 2003
Messages : 448
Points : 134
Points : 134
Par défaut Bon courage

Ta seule solution est de formater ton fichier CSV
PrinceMaster77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2007, 16h58   #6
Membre du Club
 
Inscription : juin 2005
Messages : 97
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 97
Points : 56
Points : 56
Citation:
Envoyé par gderenne Voir le message
Salut,

Dans ta source, il n'y a que des champs et des "suite". Cela représente réellement ta source ? Il n'y a pas de données à attribuer à ces champs ?

Tu veux importer dans quoi ?
ok je donne un autre exemple
mon fichier csv va contenir des informations concernant des livres
avec des champs TITRE, SOUSTITRE et RESUME par exemple

dans chacun de ces champs on pourra trouver les caracteres spéciaux retour ligne, guillement ou point-virgule

ce qui va casser mon fichier CSV (comme Excel le génère)

je ne veux pas me compliquer la saisie dans excel en codant ("escapant") ces caracteres, la saisie doit restée naturelle

je reste donc sur mon idee de parser moi meme le CSV, c'est faisable

si dans excel on pouvait choisir ses propres séparateurs de champ et d'enregistrement je n'aurais pas de problème, hélas ce n'est pas possible...
ddeee est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2007, 21h05   #7
Modérateur
 
Avatar de roro06
 
Inscription : avril 2007
Messages : 1 364
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : avril 2007
Messages : 1 364
Points : 1 551
Points : 1 551
Bonjour

j'ai une question :
Si les champs peuvent contenir des point-virgules (ou non), des guillemets (ou non), des virgules (ou non), comment comptes-tu différencier les champs ? Comment savoir si un caractere point-virgule est un séparateur ou du contenu ? Je ne pense pas qu'un parsing de la sorte soit faisable, et surtout fiable ! Pour peu qu'un utilisateur saisisse un guillemet sans le refermer (c'est classique !), ton analyse sera faussée jusqu'au bout ! La saisie ne peut-elle se faire que dans excel ? Pourquoi pas un formulaire html et une ou deux pages ASP avec une petite bdd access ? (ou même un bête formulaire access) ?
__________________


" La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
(J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

Chuck Norris comprend JC Van Damme.
roro06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/11/2007, 00h12   #8
Membre confirmé
 
Avatar de gderenne
 
Inscription : juillet 2007
Messages : 248
Détails du profil
Informations personnelles :
Âge : 39

Informations forums :
Inscription : juillet 2007
Messages : 248
Points : 217
Points : 217
Le mieux n'est-il pas de demander un export XML à Excel pour pouvoir l'importer en XML directement sans traitement préalable...
Code XML :
1
2
3
4
5
6
7
8
9
10
11
<bibliotheque>
  <livre>
    <titre>blabla;"TAB";etc";;;"""""";;;</titre>
    <resume>";";";";";";";";";";";";";";";";"</resume>
  </livre>
  <livre>
    <titre>"""""";;;;;;</titre>
    <soustitre>blabla";";";";</soustitre>
    <resume>...</resume>
  </livre>
</bibliotheque>
Fait à la voléepour donner une idée...
__________________
Cordialement,
Gil DERENNE
Ingénieur du Son
gderenne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2007, 10h51   #9
Membre du Club
 
Inscription : juin 2005
Messages : 97
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 97
Points : 56
Points : 56
Citation:
Envoyé par roro06 Voir le message
Bonjour

j'ai une question :
Si les champs peuvent contenir des point-virgules (ou non), des guillemets (ou non), des virgules (ou non), comment comptes-tu différencier les champs ? Comment savoir si un caractere point-virgule est un séparateur ou du contenu ? Je ne pense pas qu'un parsing de la sorte soit faisable, et surtout fiable ! Pour peu qu'un utilisateur saisisse un guillemet sans le refermer (c'est classique !), ton analyse sera faussée jusqu'au bout ! La saisie ne peut-elle se faire que dans excel ? Pourquoi pas un formulaire html et une ou deux pages ASP avec une petite bdd access ? (ou même un bête formulaire access) ?
si l'utilisateur oublie un guillement de toute facon Excel va traiter le caractere lors de l'enregistrement en CSV, le guillemet sera doublé

exemple l'utilisateur saisit [il a dit "bonjou]
Excel va enregistrer ["il a dit ""bonjou"]

donc les guillemets non fermés ne sont pas un probleme

je vais pas faire l'algo ici mais dès lors qu'Excel a "quoté" une cellule :
si je rencontre un point-virgule je l'ignore
si je rencontre un CR je l'igone
si je rencontre un guillement c'est la fin de la cellule (du champ) sauf si il est doublé, dans ce cas je continue jusqu'au guillement généré par excel
ddeee est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2007, 10h53   #10
Membre du Club
 
Inscription : juin 2005
Messages : 97
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 97
Points : 56
Points : 56
Citation:
Envoyé par gderenne Voir le message
Le mieux n'est-il pas de demander un export XML à Excel pour pouvoir l'importer en XML directement sans traitement préalable...
Fait à la voléepour donner une idée...
il faut quelle version d'Excel ?
j'ai Excel 2000 et je vois pas cette option...
ddeee est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/11/2007, 00h12   #11
Membre confirmé
 
Avatar de gderenne
 
Inscription : juillet 2007
Messages : 248
Détails du profil
Informations personnelles :
Âge : 39

Informations forums :
Inscription : juillet 2007
Messages : 248
Points : 217
Points : 217
Mouais...

Il doit y avoir un add-on à Excel qui permette un export en XML. Le mieux est d'aller faire un tour sur le site de Office chez Microsoft.
__________________
Cordialement,
Gil DERENNE
Ingénieur du Son
gderenne est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h46.


 
 
 
 
Partenaires

Hébergement Web