Since you already stepped down the slippery slope of Windows
automation, you might as well go the full step and automate Excel
from Perl, using Win32::OLE (for Windows) or Spreadsheet::ParseExcel (for Windows or Linux/other *nixes?) and
some code grabbed from here
(untested code):
use Win32::OLE qw(in with);
use Win32::OLE::Const 'Microsoft Excel';
# die on errors...
$Win32::OLE::Warn = 3;
# get already active Excel application or open new
my $Excel = Win32::OLE->GetActiveObject('Excel.Application')
|| Win32::OLE->new('Excel.Application', 'Quit');
# open Excel file
my $Book = $Excel->Workbooks->Open("c:/komodo projects/test.xls");
# You can dynamically obtain the number of worksheets, rows,
# and columns through the Excel OLE interface. Excel's
# Visual Basic Editor has more information on the Excel OLE
# interface. Here we just use the first worksheet, rows 1
# through 4 and columns 1 through 3. select worksheet
# number 1 (you can also select a worksheet by name)
my $Sheet = $Book->Worksheets(1);
foreach my $row (1..4) {
foreach my $col (1..3) {
# skip empty cells
next unless defined $Sheet->Cells($row,$col)->{'Value'};
# print out the contents of a cell
printf "At ($row, $col) the value is %s and the formula is %s\n",
$Sheet->Cells($row,$col)->{'Value'},
$Sheet->Cells($row,$col)->{'Formula'};
}
}
# clean up after ourselves
$Book->Close;
Of course, you could also use Perl to manipulate that
workbook :
$sheet->Cells($row, $col)->{'Value'} = 1;
perl -MHTTP::Daemon -MHTTP::Response -MLWP::Simple -e ' ; # The
$d = new HTTP::Daemon and fork and getprint $d->url and exit;#spider
($c = $d->accept())->get_request(); $c->send_response( new #in the
HTTP::Response(200,$_,$_,qq(Just another Perl hacker\n))); ' # web
|