#!/usr/bin/perl -w
#Alexandr, я бы сделал это так:
use strict;
use Spreadsheet::ParseExcel;
print "Content-type: text/html\\n\\n";
my $filename = \'\';
my $oExcel = new Spreadsheet::ParseExcel;
if(defined $ENV{QUERY_STRING}) && $ENV{QUERY_STRING} ne \'\'){
my @parts = split(\'&\',$ENV{QUERY_STRING});
my ($par,$val);
foreach(@parts){
($par,$val) = split(/=/,$_,2);
if($par eq \'path\'){$filename = $val; last;}
}
}
if($filename eq \'\'){print "
No path specified!
\\n"; exit;}
if(!(-e $filename) || !(-r $filename)){print "File is not aviable!
Maby file not exists..\\n"; exit;}
my $oBook = $oExcel->Parse($filename);
my($iR, $iC, $oWkS, $oWkC);
print "FILE :", $oBook->{File} , "
\\n";
print "COUNT :", $oBook->{SheetCount} , "
\\n";
print "AUTHOR:", $oBook->{Author} , "
\\n"
if defined $oBook->{Author};
print "
\\n";
for(my $iSheet=0; $iSheet < $oBook->{SheetCount} ; $iSheet++){
$oWkS = $oBook->{Worksheet}[$iSheet];
print "
--------- SHEET:", $oWkS->{Name}, "
\\n";
for(my $iR = $oWkS->{MinRow}; defined $oWkS->{MaxRow} && $iR <= $oWkS->{MaxRow}; $iR++){
for(my $iC = $oWkS->{MinCol}; defined $oWkS->{MaxCol} && $iC <= $oWkS->{MaxCol}; $iC++){
$oWkC = $oWkS->{Cells}[$iR][$iC];
print "( $iR , $iC ) =>", $oWkC->Value, "
\\n" if($oWkC);
}
}
}
print "
All done.
\\n";
#Да, даный скрипт ни в какой файл ничего не записывает - он лишь выводит
# на экран содержимое. Если хочешь, я как-нибудь переделаю его на досуге,
# но чуть позже(работы завал!). Удачи!