2010-07-26 35 views
0

Je reçois l'erreur Win32::OLE<0.1709> error 0x80020009: "Exception occurred" in PROPERTYPUT "Value" à la ligne 109.Pourquoi une exception est-elle générée lorsque j'essaie de définir la valeur d'une cellule dans Excel à l'aide de Win32 :: OLE de Perl?

Le code est Perl.

foreach my $ref_array1 (@$array1) {  # loop through the array 
foreach my $col1 (@$ref_array1) {  
    foreach my $ref_array2 (@$array2) {  # loop through the array 
    foreach my $col2 (@$ref_array2) {  
     if ($col1 eq $col2) 
     { 

      this is line 109: **$worksheet1->Cells($j,1)->{'Value'} = $col1;** 

      $j++; 

Toute aide est appréciée. Thankyou

+0

user402705: J'ai reformaté votre question pour la rendre plus lisible. Jetez un coup d'oeil pour référence future. –

+2

Et, essayez de trouver un exemple court mais complet que nous pouvons exécuter qui présente toujours le problème. –

Répondre

3

L'exemple suivant incomplet fonctionne (par exemple, il met 5 dans la cellule A1):

#!/usr/bin/perl 

use strict; use warnings; 

use Win32::OLE qw(in with); 
use Win32::OLE::Const 'Microsoft Excel'; 
$Win32::OLE::Warn = 3; 

my $excel = get_excel(); 
$excel->{Visible} = 1; 

my $book = $excel->Workbooks->Add; 
my $sheet = $book->Worksheets->Add; 
$sheet->{Name} = 'Perl Win32-OLE Example'; 

my $range = $sheet->Cells(1,1); 
$range->{Value} = 5; 
$range->AutoFormat; 

sub get_excel { 
    my $excel; 

    unless (eval { 
      $excel = Win32::OLE->GetActiveObject('Excel.Application') 
    }) { 
     die [email protected], "\n"; 
    } 

    unless(defined $excel) { 
     $excel = Win32::OLE->new('Excel.Application', sub { $_[0]->Quit }) 
      or die "Oops, cannot start Excel: ", 
        Win32::OLE->LastError, "\n"; 
    } 
    return $excel; 
} 

Voir aussi mon Perl Win32::OLE example.