Работает следующий неполный пример (то есть он помещает 5 в ячейку 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 $@, "\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;
}
См. Также мой пример Perl Win32 :: OLE .