Salut à tous.
Connaissez vous un moyen d'accéder de manière séquentielle à un fichier
Excell ?
Les seuls modules que j'ai trouvé et qui permettent d'accéder à de tels
fichiers ( tous plus ou moins basés sur
http://theoryx5.uwinnipeg.ca/CPAN/data/Spreadsheet-ParseExcel/ParseExcel.html
) le font en chargeant préalablement le fichier en mémoire, ce qui est
très handicapant en cas d'utilisation de grosses quantité de données.
Merci de vos lumières !
--
--
Thirteen at a table is unlucky only when the hostess has only twelve chops.
-- Groucho Marx
---- O Génome, mon égo -----
jerome.eteve_at_it-omics.com
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Paul GABORIT
À (at) Fri, 23 Jan 2004 15:45:12 +0100, Jéjé écrivait (wrote):
Connaissez vous un moyen d'accéder de manière séquentielle à un fichier Excell ?
Un fichier Excel n'est pas enregistré sur disque de manière séquentielle.
Les seuls modules que j'ai trouvé et qui permettent d'accéder à de tels fichiers ( tous plus ou moins basés sur http://theoryx5.uwinnipeg.ca/CPAN/data/Spreadsheet-ParseExcel/ParseExcel.html ) le font en chargeant préalablement le fichier en mémoire, ce qui est très handicapant en cas d'utilisation de grosses quantité de données.
C'est vrai que c'est très long, très lourd et parfois bloquant.
Deux méthodes pour y pallier :
- Si vous êtes sous Windows *et* que vous avec Excel installé, vous pouvez lui demander de faire le boulot à votre place via OLE (c'est faisable mais je n'ai jamais pratiqué).
- Sinon, il faudrait se pencher sur le code de Spreadsheet::ParseExcel pour essayer de rendre la lecture et l'analyse du document plus modulaire... mais ce n'est pas simple (le format des fichiers Excel est vraiment tordu).
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>
À (at) Fri, 23 Jan 2004 15:45:12 +0100,
Jéjé <jerome.eteve@it-omics.com> écrivait (wrote):
Connaissez vous un moyen d'accéder de manière séquentielle à un fichier
Excell ?
Un fichier Excel n'est pas enregistré sur disque de manière séquentielle.
Les seuls modules que j'ai trouvé et qui permettent d'accéder à de tels
fichiers ( tous plus ou moins basés sur
http://theoryx5.uwinnipeg.ca/CPAN/data/Spreadsheet-ParseExcel/ParseExcel.html
) le font en chargeant préalablement le fichier en mémoire, ce qui est
très handicapant en cas d'utilisation de grosses quantité de données.
C'est vrai que c'est très long, très lourd et parfois bloquant.
Deux méthodes pour y pallier :
- Si vous êtes sous Windows *et* que vous avec Excel installé, vous pouvez lui
demander de faire le boulot à votre place via OLE (c'est faisable mais je n'ai
jamais pratiqué).
- Sinon, il faudrait se pencher sur le code de Spreadsheet::ParseExcel pour
essayer de rendre la lecture et l'analyse du document plus modulaire... mais
ce n'est pas simple (le format des fichiers Excel est vraiment tordu).
--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>
À (at) Fri, 23 Jan 2004 15:45:12 +0100, Jéjé écrivait (wrote):
Connaissez vous un moyen d'accéder de manière séquentielle à un fichier Excell ?
Un fichier Excel n'est pas enregistré sur disque de manière séquentielle.
Les seuls modules que j'ai trouvé et qui permettent d'accéder à de tels fichiers ( tous plus ou moins basés sur http://theoryx5.uwinnipeg.ca/CPAN/data/Spreadsheet-ParseExcel/ParseExcel.html ) le font en chargeant préalablement le fichier en mémoire, ce qui est très handicapant en cas d'utilisation de grosses quantité de données.
C'est vrai que c'est très long, très lourd et parfois bloquant.
Deux méthodes pour y pallier :
- Si vous êtes sous Windows *et* que vous avec Excel installé, vous pouvez lui demander de faire le boulot à votre place via OLE (c'est faisable mais je n'ai jamais pratiqué).
- Sinon, il faudrait se pencher sur le code de Spreadsheet::ParseExcel pour essayer de rendre la lecture et l'analyse du document plus modulaire... mais ce n'est pas simple (le format des fichiers Excel est vraiment tordu).
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>
Jéjé
Dans l'article , "Paul GABORIT" a tapoté :
Un fichier Excel n'est pas enregistré sur disque de manière séquentielle.
Mmm. Sont vraiment bizarres chez minimoux.
C'est vrai que c'est très long, très lourd et parfois bloquant. Oui oui, ce sont bien des fichiers excell.
Deux méthodes pour y pallier :
- Si vous êtes sous Windows *et* que vous avec Excel installé, vous pouvez lui demander de faire le boulot à votre place via OLE (c'est faisable mais je n'ai jamais pratiqué).
- Sinon, il faudrait se pencher sur le code de Spreadsheet::ParseExcel pour essayer de rendre la lecture et l'analyse du document plus modulaire... mais ce n'est pas simple (le format des fichiers Excel est vraiment tordu).
Un grand merci pour ces renseignements. Comme c'est pas une fonctionnalité très prioritaire, je crois que je vais me contenter de dire: "allez les users, exportez en csv !" .
-- -- We prefer to speak evil of ourselves rather than not speak of ourselves at all. ---- O Génome, mon égo ----- jerome.eteve_at_it-omics.com
Dans l'article <r74quj9eoq.fsf@michelange.enstimac.fr>, "Paul GABORIT"
<Paul.Gaborit@invalid.invalid> a tapoté :
Un fichier Excel n'est pas enregistré sur disque de manière
séquentielle.
Mmm. Sont vraiment bizarres chez minimoux.
C'est vrai que c'est très long, très lourd et parfois bloquant.
Oui oui, ce sont bien des fichiers excell.
Deux méthodes pour y pallier :
- Si vous êtes sous Windows *et* que vous avec Excel installé, vous
pouvez lui demander de faire le boulot à votre place via OLE (c'est
faisable mais je n'ai jamais pratiqué).
- Sinon, il faudrait se pencher sur le code de Spreadsheet::ParseExcel
pour essayer de rendre la lecture et l'analyse du document plus
modulaire... mais ce n'est pas simple (le format des fichiers Excel est
vraiment tordu).
Un grand merci pour ces renseignements.
Comme c'est pas une fonctionnalité très prioritaire, je crois que
je vais me contenter de dire: "allez les users, exportez en csv !" .
--
--
We prefer to speak evil of ourselves rather than not speak of ourselves at all.
---- O Génome, mon égo -----
jerome.eteve_at_it-omics.com
Un fichier Excel n'est pas enregistré sur disque de manière séquentielle.
Mmm. Sont vraiment bizarres chez minimoux.
C'est vrai que c'est très long, très lourd et parfois bloquant. Oui oui, ce sont bien des fichiers excell.
Deux méthodes pour y pallier :
- Si vous êtes sous Windows *et* que vous avec Excel installé, vous pouvez lui demander de faire le boulot à votre place via OLE (c'est faisable mais je n'ai jamais pratiqué).
- Sinon, il faudrait se pencher sur le code de Spreadsheet::ParseExcel pour essayer de rendre la lecture et l'analyse du document plus modulaire... mais ce n'est pas simple (le format des fichiers Excel est vraiment tordu).
Un grand merci pour ces renseignements. Comme c'est pas une fonctionnalité très prioritaire, je crois que je vais me contenter de dire: "allez les users, exportez en csv !" .
-- -- We prefer to speak evil of ourselves rather than not speak of ourselves at all. ---- O Génome, mon égo ----- jerome.eteve_at_it-omics.com
Louis POTY
"Jéjé" a écrit dans le message de news:
Salut à tous. Connaissez vous un moyen d'accéder de manière séquentielle à un fichier Excell ? Les seuls modules que j'ai trouvé et qui permettent d'accéder à de tels fichiers ( tous plus ou moins basés sur
) le font en chargeant préalablement le fichier en mémoire, ce qui est très handicapant en cas d'utilisation de grosses quantité de données.
Merci de vos lumières !
-- -- Thirteen at a table is unlucky only when the hostess has only twelve chops.
-- Groucho Marx ---- O Génome, mon égo ----- jerome.eteve_at_it-omics.com
Vu que les fichiers Excel sont tout sauf séquentiel, il vaut mieux utiliser OLE..... Un petit exemple ************************************** use Win32::OLE; use Win32::OLE::Variant; use Win32::OLE::NLS qw(:LOCALE :DATE);
# Le fichier excel à lire est passé en argument $wd1 = $ARGV[0]; # On utilise Excel s'il est déja lancé, sinon on le lance eval {$ex = Win32::OLE->GetActiveObject('Excel.Application')}; die "Excel not installed" if $@; unless (defined $ex) { $ex = Win32::OLE->new('Excel.Application', sub {$_[0]->Quit;}) or die "Oops, cannot start Excel"; } # On ouvre le classeur $nomficinput = $wd1; $book = Win32::OLE->GetObject($nomficinput); $sheet = $book->Worksheets(1); # On lit ce que l'on veut, par exemple la cellule D3 $ligne = 3; $colonne = 4; $contenu_cellule = $sheet->Cells($ligne, $colonne); # On referme tout undef $book; undef $ex; *************************************************************
Louis
"Jéjé" <jerome.eteve@it-omics.com> a écrit dans le message de
news:pan.2004.01.23.15.45.08.991812.12839@it-omics.com...
Salut à tous.
Connaissez vous un moyen d'accéder de manière séquentielle à un fichier
Excell ?
Les seuls modules que j'ai trouvé et qui permettent d'accéder à de tels
fichiers ( tous plus ou moins basés sur
) le font en chargeant préalablement le fichier en mémoire, ce qui est
très handicapant en cas d'utilisation de grosses quantité de données.
Merci de vos lumières !
--
--
Thirteen at a table is unlucky only when the hostess has only twelve
chops.
-- Groucho Marx
---- O Génome, mon égo -----
jerome.eteve_at_it-omics.com
Vu que les fichiers Excel sont tout sauf séquentiel, il vaut mieux utiliser
OLE.....
Un petit exemple
**************************************
use Win32::OLE;
use Win32::OLE::Variant;
use Win32::OLE::NLS qw(:LOCALE :DATE);
# Le fichier excel à lire est passé en argument
$wd1 = $ARGV[0];
# On utilise Excel s'il est déja lancé, sinon on le lance
eval {$ex = Win32::OLE->GetActiveObject('Excel.Application')};
die "Excel not installed" if $@;
unless (defined $ex) {
$ex = Win32::OLE->new('Excel.Application', sub {$_[0]->Quit;})
or die "Oops, cannot start Excel";
}
# On ouvre le classeur
$nomficinput = $wd1;
$book = Win32::OLE->GetObject($nomficinput);
$sheet = $book->Worksheets(1);
# On lit ce que l'on veut, par exemple la cellule D3
$ligne = 3;
$colonne = 4;
$contenu_cellule = $sheet->Cells($ligne, $colonne);
# On referme tout
undef $book;
undef $ex;
*************************************************************
Salut à tous. Connaissez vous un moyen d'accéder de manière séquentielle à un fichier Excell ? Les seuls modules que j'ai trouvé et qui permettent d'accéder à de tels fichiers ( tous plus ou moins basés sur
) le font en chargeant préalablement le fichier en mémoire, ce qui est très handicapant en cas d'utilisation de grosses quantité de données.
Merci de vos lumières !
-- -- Thirteen at a table is unlucky only when the hostess has only twelve chops.
-- Groucho Marx ---- O Génome, mon égo ----- jerome.eteve_at_it-omics.com
Vu que les fichiers Excel sont tout sauf séquentiel, il vaut mieux utiliser OLE..... Un petit exemple ************************************** use Win32::OLE; use Win32::OLE::Variant; use Win32::OLE::NLS qw(:LOCALE :DATE);
# Le fichier excel à lire est passé en argument $wd1 = $ARGV[0]; # On utilise Excel s'il est déja lancé, sinon on le lance eval {$ex = Win32::OLE->GetActiveObject('Excel.Application')}; die "Excel not installed" if $@; unless (defined $ex) { $ex = Win32::OLE->new('Excel.Application', sub {$_[0]->Quit;}) or die "Oops, cannot start Excel"; } # On ouvre le classeur $nomficinput = $wd1; $book = Win32::OLE->GetObject($nomficinput); $sheet = $book->Worksheets(1); # On lit ce que l'on veut, par exemple la cellule D3 $ligne = 3; $colonne = 4; $contenu_cellule = $sheet->Cells($ligne, $colonne); # On referme tout undef $book; undef $ex; *************************************************************