problème étrange avec excel
j'ai déja poster se message ailleur sans répondse pour le moment donc je la pose ici aussi:
Donc voila, j'ai un problème hier mon code marchai nikel, aujourd'hui je le relance et pouf il marche plus: aider moi s'il vous plai:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
| # !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)
{
print "$xls";
# 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("$xls") || die "Fichier non trouvé";
# 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(81)->{'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/ org.txt/;
my $scalar2="01";
my @indent;
my $z;
foreach my $ref_array2 (@$array2) {
# Parcours de chaque ligne
foreach $scalar2 (@$ref_array2) {
if ($scalar2 eq $z){
goto FINBOUCLE;
}
else{
push (@indent,$scalar2);
}
}
}
FINBOUCLE:
my $j=0;
# Affichage de ces valeurs
foreach my $ref_array (@$array) {
# Parcours de chaque ligne
foreach my $scalar (@$ref_array) {
# Parcours
print "--------------------------------------------------------\n";
if($indent[$j]){
if ($scalar eq "")
{
open F, ">>$xls"; # ouverture en ajout dans un fichier existant
print F "$indent[$j] ";
print F "no patentee\n"; # écriture de $word dans le fichier
}
else{
foreach my $word ( split(';',$scalar) ) {
print "$indent[$j] ";
print "$word\n";
open F, ">>$xls"; # ouverture en ajout dans un fichier existant
print F "$indent[$j] ";
print F "$word\n"; # écriture de $word dans le fichier
}
}
$j++;
}
else{goto FINFIC;}
}
}
close F;
FINFIC:
} |
l'erreur est à l'ouverture du fichier et renvoi ceci:
[Thu Jun 15 10:14:24 2006] extract_org.pl: OLE exception from "Microsoft Office Excel":
[Thu Jun 15 10:14:24 2006] extract_org.pl:
[Thu Jun 15 10:14:24 2006] extract_org.pl: 'convertir.xls' introuvable. Vérifiez l'orthographe du nom du classeur et la
[Thu Jun 15 10:14:24 2006] extract_org.pl: validité de l'emplacement.
[Thu Jun 15 10:14:24 2006] extract_org.pl:
[Thu Jun 15 10:14:24 2006] extract_org.pl: Si vous essayez d'ouvrir le fichier à partir de la liste des fichiers les
[Thu Jun 15 10:14:24 2006] extract_org.pl: plus récents, assurez-vous que le fichier n'a pas été renommé, déplacé ou
[Thu Jun 15 10:14:24 2006] extract_org.pl: supprimé.
[Thu Jun 15 10:14:24 2006] extract_org.pl:
[Thu Jun 15 10:14:24 2006] extract_org.pl: Win32::OLE(0.1702) error 0x800a03ec
[Thu Jun 15 10:14:24 2006] extract_org.pl: in METHOD/PROPERTYGET "Open" at extract_org.pl line 22
le fichier existe bien sur.