Lanfeust42 | je vais vous collez le code ca vous aideras surement mieux (dsl je pensais à autre chose quand j'ai poster je l'ai oublier)
Code :
- # !usr/perl/bin/
- # Modules nécessaires
- use strict;
- use Spreadsheet::WriteExcel;
- use warnings;
- use Win32::OLE qw(in with);
- use CGI::Carp qw(fatalsToBrowser);
- use Win32::OLE::Const 'Microsoft Excel';
- $Win32::OLE::Warn = 3;
- use Cwd;
- my $dir = cwd;
- chdir $dir;
- my @ListeXLS = <*.xls>;
- foreach my $xls (@ListeXLS)
- {
- if($xls =~ / traité.xls/)
- {next;}
- # Création d'une nouvelle instance du package pour Excel
- my $Excel = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application', 'Quit');
- # Ouverture du fichier Excel "C:\\stat.xls"
- my $Book = $Excel->Workbooks->Open("$dir/$xls" ) || die "Fichier non trouvé";
- print "debut\n";
- #choix des donner à extraire
- my $col;
- my $numSheet;
- print "quelles données souhaité vous extraire?\n";
- print "auteur taper 1\n";
- print "organisation taper 2\n";
- print "ic taper 3\n";
- chomp($_ = <STDIN> );
- if ($_ =~ /1/){$col=80;$numSheet="1";}
- elsif($_ =~ /2/){$col=81;$numSheet="2";}
- elsif($_ =~ /3/){$col=73;$numSheet="3";}
- print "$_\n";
- sleep 5;
- # Affectation du 1er classeur à la variable $Sheet
- my $Sheet = $Book->Worksheets(1);
- # Récupération des valeurs de toutes les cellules comprises entre B2 et B10
- my $array = $Sheet->Columns($col)->{'Value'}; # get the contents
- # Récupération des valeurs de toutes les cellules comprises entre A2 et A10
- my $array2 = $Sheet->Columns(1)->{'Value'}; # get the contents
- $Book->Close;
- $xls =~ s/.xls/ traité.xls/;
- my $scalar2="01";
- my @indent;
- my $z;
- foreach my $ref_array2 (@$array2) {
- # Parcours de chaque ligne
- foreach $scalar2 (@$ref_array2) {
- if ($scalar2){
- push (@indent,$scalar2);
- }
- else{
- goto FINBOUCLE;
- }
- }
- }
- FINBOUCLE:
- my $workbook;
- #my $Excel1 = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application', 'Quit');
- if (-e $xls) {
- print "existe\n";
- $workbook = $Excel->Workbooks->Open("$dir/$xls" ) || die "impossible d'ouvrir le fichier $xls ou fichier ouvert";
- }
- else{
- # Creer une page excel ayant pour le même nom que le fichier txt
- $workbook = Spreadsheet::WriteExcel->new($xls) || die "impossible de creer $xls ou fichier ouvert";
- $workbook->add_worksheet("auteur" );
- $workbook->add_worksheet("organisation" );
- $workbook->add_worksheet("ic" );
- }
- # sélectionner la feuille la feuille
- my $worksheet;
- if ($numSheet eq 1){
- $worksheet = $workbook->Worksheets(1);
- print "feuille 1\n";
- }
- elsif($numSheet eq 2){
- $worksheet = $workbook->Worksheets(2);
- print "feuille 2\n";
- }
- elsif($numSheet eq 3){
- $worksheet = $workbook->Worksheets(3);
- print "feuille 3\n";
- }
- my $ligne_excel = 0;
- my $j=0;
- # Affichage de ces valeurs
- foreach my $ref_array (@$array) {
- # Parcours de chaque ligne
- foreach my $scalar (@$ref_array) {
- # Parcours
- print "--------------------------------------------------------\n";
- print "$indent[$j] $scalar\n";
- if($indent[$j]){
- if ($scalar)
- {
- if ($col eq "73" ){
- foreach my $word ( split(' ',$scalar) ) {
- if ($word eq "-" ){} #si le mot est un -
- else{
- my $toto =$indent[$j];
- $worksheet->write($ligne_excel, 0,$toto);
- $worksheet->write($ligne_excel, 1,$word);
- $ligne_excel++;
- }
- }
- }
- else{
- foreach my $word ( split(';',$scalar) ) {
- $worksheet->write($ligne_excel, 0,"$indent[$j]" );
- $worksheet->write($ligne_excel, 1,$word);
- $ligne_excel++;
- }
- }
- }
- else{
- #remplissage du fichier excel
- $worksheet->write($ligne_excel, 0,$indent[$j]);
- $worksheet->write($ligne_excel, 1,"no patentee" );
- $ligne_excel++;
- }
- $j++;
- }
- else{goto FINFIC;}
- }
- }
- FINFIC:
- }
- print "Open Perl IDE Test finished.\n";
|
|