Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[WD11] Lenteur avec XlsDonnees

14 réponses
Avatar
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

10 réponses

1 2
Avatar
Romain PETIT
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é)
Avatar
Juanito
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
Avatar
Romain PETIT
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é)
Avatar
Juanito
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
Avatar
Bruno Wrk
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.
Avatar
Romain PETIT
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é)
Avatar
Albert
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
Avatar
patrice
as tu fait un essai en mettant en commentaire ce qui est symbolisé par "..."
?
(histoire d'etre sur que ca vient du xlsdonnee)

"Juanito" a écrit dans le message de
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




Avatar
Juanito
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" a écrit dans le message de
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




Avatar
Juanito
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
1 2