[WD11] Lenteur avec XlsDonnees

Le
Juanito
Bonjour,

J'ai un fichier Excel contenant des données à récupérer dans une autre
application. Ce fichier fait 15200 lignes qui contiennent chacune 66
colonnes donc 79200 cellules.

Pour un premier passage de vérification je lis juste 2 cellules par
ligne et c'est très très très long Le début semble rapide mais plus
cela avance dans le fichier, plus c'est lent. On dirait qu'il repart du
début à chaque fonction XlsDonnee(). C'est possible ?

Comment accélérer le traitement ?

Merci d'avance

Jean
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Romain PETIT
Le #14492451
Juanito a couché sur son écran :
Bonjour,



Bonjour,

Comment accélérer le traitement ?



Poste ton code...

A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Juanito
Le #14492441
Romain PETIT a formulé ce jeudi :
Juanito a couché sur son écran :
Bonjour,



Bonjour,

Comment accélérer le traitement ?



Poste ton code...

A+



J'ai simplifié à l'extrème mon code pour mes essais et cela fait
quelque chose comme ça :

------------------------------------------------------------------------
GP_N_IdExcel=xlsOuvre(MonFichierExcel)

SI GP_N_IdExcel=-1 ALORS
Erreur("Impossible d'ouvrir le fichier Excel.")
RETOUR
FIN

N_NbLignes=xlsNbLigne(GP_N_IdExcel)

SI N_NbLignes=0 ALORS
Erreur("Il n'y a pas de ligne dans le fichier Excel")
xlsFerme(GP_N_IdExcel)
RETOUR
FIN

POUR N_I=2 A N_NbLignes
N_Identifiant=Val(xlsDonnée(GP_N_IdExcel,N_I,1))
S_Code=xlsDonnée(GP_N_IdExcel,N_I,3)
S_Nom=xlsDonnée(GP_N_IdExcel,N_I,55)
...
FIN
xlsFerme(GP_N_IdExcel)
-----------------------------------------------------------------------

Plus je récupère de valeurs dans le fichier Excel plus c'est lent (ce
qui est normal) mais plus j'avance dans les lignes plus c'est lent.
J'ai mis une jauge pour regarder et elle défile correctement au début
et plus elle avance plus elle ralentie.

Jean
Romain PETIT
Le #14492431
Le 26/06/2008, Juanito a supposé :

Plus je récupère de valeurs dans le fichier Excel plus c'est lent (ce qui est
normal) mais plus j'avance dans les lignes plus c'est lent. J'ai mis une
jauge pour regarder et elle défile correctement au début et plus elle avance
plus elle ralentie.



Et ça donne quoi si tu ouvres et fermes à chaque fois le fichier excel
?
(xlsouvre et xlsferme dans la boucle)
(juste par curiosité...)

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Juanito
Le #14492421
Romain PETIT avait soumis l'idée :
Le 26/06/2008, Juanito a supposé :

Plus je récupère de valeurs dans le fichier Excel plus c'est lent (ce qui
est normal) mais plus j'avance dans les lignes plus c'est lent. J'ai mis
une jauge pour regarder et elle défile correctement au début et plus elle
avance plus elle ralentie.



Et ça donne quoi si tu ouvres et fermes à chaque fois le fichier excel ?
(xlsouvre et xlsferme dans la boucle)
(juste par curiosité...)



XlsOuvre() et XlsFerme() mettent environ une seconde chacun. Cela
ralentit donc d'autant le traitement.

Jean
Bruno Wrk
Le #14492411
Juanito a présenté l'énoncé suivant :
Bonjour,

J'ai un fichier Excel contenant des données à récupérer dans une autre
application. Ce fichier fait 15200 lignes qui contiennent chacune 66 colonnes
donc 79200 cellules.

Pour un premier passage de vérification je lis juste 2 cellules par ligne et
c'est très très très long ... Le début semble rapide mais plus cela avance
dans le fichier, plus c'est lent. On dirait qu'il repart du début à chaque
fonction XlsDonnee(). C'est possible ?

Comment accélérer le traitement ?

Merci d'avance

Jean



J'ai déjà pu constater cela aussi lors d'importation d'anciens fichiers
exportés en xls ( donc 70/80000 lignes )
Résultat au début, le phénomène étant surtout que plus on avancait dans
le fichier plus ca ralentissait, je découpais mon fichier source en
10/15 parties, ce qui était loin d'être fantastique.

Après cela, j'ai tout simplement converti mon fichier xls en csv, et
fait une lecture adéquate du fichier.
Au niveau de la lecture du fichier, c'est le jour et la nuit : vitesse
et régularité.
Du coup je m'efforce qund c'est possible de faire mes traitements avec
des fichiers csv.
Romain PETIT
Le #14492401
Juanito a émis l'idée suivante :

XlsOuvre() et XlsFerme() mettent environ une seconde chacun. Cela ralentit
donc d'autant le traitement.



Et si tu ouvres et fermes le fichier toutes les 1000 lignes par exemple
?

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Albert
Le #14492391
Bonjour,

Personnellement j'utilise la classe Cexcel et je n'ai jamis constaté
de problème de lenteur
dans l'importation de données

Cordialement

Albert
patrice
Le #14492381
as tu fait un essai en mettant en commentaire ce qui est symbolisé par "..."
?
(histoire d'etre sur que ca vient du xlsdonnee)

"Juanito" news:
Romain PETIT a formulé ce jeudi :
> Juanito a couché sur son écran :
>> Bonjour,
>
> Bonjour,
>
>> Comment accélérer le traitement ?
>
> Poste ton code...
>
> A+

J'ai simplifié à l'extrème mon code pour mes essais et cela fait
quelque chose comme ça :

------------------------------------------------------------------------
GP_N_IdExcel=xlsOuvre(MonFichierExcel)

SI GP_N_IdExcel=-1 ALORS
Erreur("Impossible d'ouvrir le fichier Excel.")
RETOUR
FIN

N_NbLignes=xlsNbLigne(GP_N_IdExcel)

SI N_NbLignes=0 ALORS
Erreur("Il n'y a pas de ligne dans le fichier Excel")
xlsFerme(GP_N_IdExcel)
RETOUR
FIN

POUR N_I=2 A N_NbLignes
N_Identifiant=Val(xlsDonnée(GP_N_IdExcel,N_I,1))
S_Code=xlsDonnée(GP_N_IdExcel,N_I,3)
S_Nom=xlsDonnée(GP_N_IdExcel,N_I,55)
...
FIN
xlsFerme(GP_N_IdExcel)
-----------------------------------------------------------------------

Plus je récupère de valeurs dans le fichier Excel plus c'est lent (ce
qui est normal) mais plus j'avance dans les lignes plus c'est lent.
J'ai mis une jauge pour regarder et elle défile correctement au début
et plus elle avance plus elle ralentie.

Jean




Juanito
Le #14492371
Oui, j'ai fait un essai avec juste les xlsdonnees(). Le traitement se
ralenti au fur et à mesure de son avancement.

Jean


patrice a exposé le 27/06/2008 :
as tu fait un essai en mettant en commentaire ce qui est symbolisé par "..."
?
(histoire d'etre sur que ca vient du xlsdonnee)

"Juanito" news:
Romain PETIT a formulé ce jeudi :
Juanito a couché sur son écran :
Bonjour,



Bonjour,

Comment accélérer le traitement ?



Poste ton code...

A+



J'ai simplifié à l'extrème mon code pour mes essais et cela fait
quelque chose comme ça :

------------------------------------------------------------------------
GP_N_IdExcel=xlsOuvre(MonFichierExcel)

SI GP_N_IdExcel=-1 ALORS
Erreur("Impossible d'ouvrir le fichier Excel.")
RETOUR
FIN

N_NbLignes=xlsNbLigne(GP_N_IdExcel)

SI N_NbLignes=0 ALORS
Erreur("Il n'y a pas de ligne dans le fichier Excel")
xlsFerme(GP_N_IdExcel)
RETOUR
FIN

POUR N_I=2 A N_NbLignes
N_Identifiant=Val(xlsDonnée(GP_N_IdExcel,N_I,1))
S_Code=xlsDonnée(GP_N_IdExcel,N_I,3)
S_Nom=xlsDonnée(GP_N_IdExcel,N_I,55)
...
FIN
xlsFerme(GP_N_IdExcel)
-----------------------------------------------------------------------

Plus je récupère de valeurs dans le fichier Excel plus c'est lent (ce
qui est normal) mais plus j'avance dans les lignes plus c'est lent.
J'ai mis une jauge pour regarder et elle défile correctement au début
et plus elle avance plus elle ralentie.

Jean




Juanito
Le #14492361
Bruno Wrk a formulé la demande :
Juanito a présenté l'énoncé suivant :
Bonjour,

J'ai un fichier Excel contenant des données à récupérer dans une autre
application. Ce fichier fait 15200 lignes qui contiennent chacune 66
colonnes donc 79200 cellules.

Pour un premier passage de vérification je lis juste 2 cellules par ligne
et c'est très très très long ... Le début semble rapide mais plus cela
avance dans le fichier, plus c'est lent. On dirait qu'il repart du début à
chaque fonction XlsDonnee(). C'est possible ?

Comment accélérer le traitement ?

Merci d'avance

Jean



J'ai déjà pu constater cela aussi lors d'importation d'anciens fichiers
exportés en xls ( donc 70/80000 lignes )
Résultat au début, le phénomène étant surtout que plus on avancait dans le
fichier plus ca ralentissait, je découpais mon fichier source en 10/15
parties, ce qui était loin d'être fantastique.

Après cela, j'ai tout simplement converti mon fichier xls en csv, et fait une
lecture adéquate du fichier.
Au niveau de la lecture du fichier, c'est le jour et la nuit : vitesse et
régularité.
Du coup je m'efforce qund c'est possible de faire mes traitements avec des
fichiers csv.



Merci pour cette confirmation. Pour l'instant je n'ai pas vraiment la
possibilité de faire autrement qu'avec des fichiers .xls.
J'ai aussi découpé le fichier Excel (par année) pour que cela donne un
temps de traitement correct.

Jean
Publicité
Poster une réponse
Anonyme