PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → [WD12] Convertion xls => csv (ou txt)
[WD12] Convertion xls => csv (ou txt)
Débuté par Sylvain, 17 juil. 2008 20:30 - 6 réponses
Posté le 17 juillet 2008 - 20:30
bonsoir,
je travaille sur un fichier excel généré par un logiciel externe. Pour l'alléger je supprimer plusieurs colonne et je souhaiterai l'enregistrer au format csv ou txt.
A ce jour j'utilise le code suivant :

chemin_csv est une chaîne=ComplèteRep(SysRep(srBureau))+"temp_export_excalibur.xls"
SI fFichierExiste(chemin_csv)=1 ALORS fSupprime(chemin_csv)
SI fFichierExiste(ComplèteRep(SysRep(srMesDocuments))+"resume.xlw")=1 ALORS fSupprime(ComplèteRep(SysRep(srMesDocuments))+"resume.xlw")
fCopieFichier(SC_SelecteurFichier.SAI_FIC,chemin_csv,frJauge)


AutMonexcel est un objet OLE dynamique= ObjetActif("Excel.Application")
sI autMonexcel=Null ALORS autMonexcel=allouer un objet OLE "Excel.Application"
autMonexcel>>Workbooks>>open (chemin_csv)
autMonexcel>>ScreenUpdating=OLEVrai
autMonexcel>>visible = OLETrue
autMonexcel>>Range("cq1:go1")>>Select()
autMonexcel>>Selection>>Entirecolumn>>Delete()
autMonexcel>>Range("E1:CN1")>>Select()
autMonexcel>>Selection>>Entirecolumn>>Delete()
autMonexcel>>Range("A1:C1")>>Select()
Multitâche(0)
autMonexcel>>Selection>>Entirecolumn>>Delete()
AutMonexcel>>Save()

//autMonexcel>>Saveas("C:\Documents and Settings\Sylvain\Bureau\truc.csv",
FileFormat:=xlCSV, CreateBackup:=False)

autMonexcel>>ScreenUpdating=OLEFaux
autMonexcel>>ActiveWorkbook>>close(Faux)
AutMonexcel>>quit()
libérer autMonexcel
import_excel(chemin_csv)
SI fFichierExiste(chemin_csv)=1 ALORS fSupprime(chemin_csv)

le "Save" fonctionne. Un Save As avec juste un nom de fichier fonctionnement également mais je n'arrive pas sur le SAVEAS avec le paramètre de la conversion (csv).

Quelqu'un connait la solution ?
Merci
Posté le 18 juillet 2008 - 11:01
Pourquois passer par Excel pour faire un simple fichier CSV ?

"Sylvain" <sylvain.messe@emkaelec.com> a écrit dans le message de news:
1f89e932c8f3f2bb5fea12390a77ce82@news.pcsoft...

bonsoir,
je travaille sur un fichier excel généré par un logiciel externe. Pour
l'alléger je supprimer plusieurs colonne et je souhaiterai l'enregistrer
au format csv ou txt.
A ce jour j'utilise le code suivant :

chemin_csv est une
chaîne=ComplèteRep(SysRep(srBureau))+"temp_export_excalibur.xls"
SI fFichierExiste(chemin_csv)=1 ALORS fSupprime(chemin_csv)
SI fFichierExiste(ComplèteRep(SysRep(srMesDocuments))+"resume.xlw")=1
ALORS fSupprime(ComplèteRep(SysRep(srMesDocuments))+"resume.xlw")
fCopieFichier(SC_SelecteurFichier.SAI_FIC,chemin_csv,frJauge)


AutMonexcel est un objet OLE dynamique= ObjetActif("Excel.Application")
sI autMonexcel=Null ALORS autMonexcel=allouer un objet OLE
"Excel.Application"
autMonexcel>>Workbooks>>open (chemin_csv)
autMonexcel>>ScreenUpdating=OLEVrai
autMonexcel>>visible = OLETrue
autMonexcel>>Range("cq1:go1")>>Select()
autMonexcel>>Selection>>Entirecolumn>>Delete()
autMonexcel>>Range("E1:CN1")>>Select()
autMonexcel>>Selection>>Entirecolumn>>Delete()
autMonexcel>>Range("A1:C1")>>Select()
Multitâche(0)
autMonexcel>>Selection>>Entirecolumn>>Delete()
AutMonexcel>>Save()

//autMonexcel>>Saveas("C:\Documents and Settings\Sylvain\Bureau\truc.csv",
FileFormat:=xlCSV, CreateBackup:=False)

autMonexcel>>ScreenUpdating=OLEFaux
autMonexcel>>ActiveWorkbook>>close(Faux)
AutMonexcel>>quit()
libérer autMonexcel
import_excel(chemin_csv)
SI fFichierExiste(chemin_csv)=1 ALORS fSupprime(chemin_csv)

le "Save" fonctionne. Un Save As avec juste un nom de fichier
fonctionnement également mais je n'arrive pas sur le SAVEAS avec le
paramètre de la conversion (csv).

Quelqu'un connait la solution ?
Merci

Posté le 18 juillet 2008 - 13:46
Bonjour

je travaille sur un fichier excel généré par un logiciel externe.
Pour l'alléger je supprimer plusieurs colonne et je souhaiterai l'enregistrer > au format csv ou txt.


Il suffit au départ d'excel d'enregistrer le fichier en choissant dans la combo le type de fichier souhaité
>>>> CSV(séparateur:point-virgule)(*.csv)

Cordialement

Albert
Posté le 18 juillet 2008 - 17:22
Bonjour,

Tu n'as probablement pas donné la valeur adéquate à la constante "xlCSV" qui vaut 6 dans Excel ?

Pour visualiser les valeurs des constantes, dans Excel, lance l'éditeur VBE (Alt + F11).
Puis en mode debug (sur une macro quelconque) utilise l'espion (Menu Affichage > Fenêtre Espions) dans lequel du donnes le nom de ta constante.

A+
--
Francis MOREL
Posté le 20 juillet 2008 - 11:27
"Pourquoi passer par Excel pour faire un simple fichier CSV ?" ==> Je ne créé pas un fichier, le fichier Excel existe déjà, je veux le convertir en CSV.

"Il suffit au départ d'excel d'enregistrer le fichier en choisissant dans la combo le type de fichier souhaité" ==> je ne fais aucune manipulation sous excel, je veux que les différentes étapes sous Excel soit transparentes. Il faut donc qu'à partir de Windev je commande excel et en particulier la fonction d'enregistrement en *.csv."

Francis, en vba j'aurais ecrite la ligne suivante :
ActiveWorkbook.SaveAs Filename:= "d:/fichier.csv", FileFormat:=xlCSV, CreateBackup:=False

Sous windev les "." sont remplacés par ">>" mais les ":=" ?
Après vérification de ta valeur 6, j'ai tester la ligne suivante :
AutMonexcel>>Saveas("C:\Documents and Settings\Sylvain\Bureau\truc.csv", 6) : toujours une erreur.

Merci pour ton aide, si tu as plus d'info ou d'explication à me donner je suis tout ouîe (enfin surtout des yeux devant un écran de PC!)
Posté le 20 octobre 2008 - 12:51
Le problème a-t-il trouvé sa solution?
Pour ma part on me fourni un fichier .xls, l'extraction de données rencontre certains problèmes, que j'ai résolu en enregistrant manuellement le fichier en .CSV, maintenant je voudrais automatiser l'enregistrement en .CSV dans windev afin de rendre cette étape transparente pour l'utilisateur.....
Comment faire? La solution est peut être très très simple, mais je débute en windev.
Posté le 21 octobre 2008 - 13:56
Alain blanc a écrit :
Le problème a-t-il trouvé sa solution?
Pour ma part on me fourni un fichier .xls, l'extraction de données rencontre certains problèmes, que j'ai résolu en enregistrant manuellement le fichier en .CSV, maintenant je voudrais automatiser l'enregistrement en .CSV dans windev afin de rendre cette étape transparente pour l'utilisateur.....
Comment faire? La solution est peut être très très simple, mais je débute en windev.

Bonjour,
Effectivement windev ne reconnait pas toutes les formes de xls fabriqués.
Il suffit d'utiliser excel pour faire un csv
voici un procédure qui devrait convenir (il faut excel sur la machine)


PROCEDURE XLS_to_CSV(NomCheminFichier)

// de toute façon j'en fait un csv, sinon pour avoir un bon xls il
suffet d'un save()
// Tentative de récupération de l'objet Excel en mémoire
xl est un objet OLE dynamique = ObjetActif("Excel.Application")
// Allocation d'un objet Excel si non-trouvé
SI xl=Null ALORS xl=allouer un objet OLE "Excel.Application"
xl>>Visible=Faux // Excel n'apparait pas à l'écran
xl>>displayAlerts(Faux)
// Ouverture du document
xl>>WorkBooks>>Open(NomCheminFichier)
// en fait j'ouvre le "fichier excel" et l'enregistre:
// il se trouve alors dans le bon format
// xl>>ActiveWorkBook>>save()
NomCheminFichier=ExtraitChaîne(Minuscule(NomCheminFichier),1,".xls")+".csv"
xl>>ActiveWorkBook>>saveAs(NomCheminFichier,6)
xl>>ActiveWorkBook>>Close(Faux) // Fermeture du document
xl>>Quit() // Fermeture d'Excel
libérer xl // Libération de l'objet Excel