2013-09-20 4 views
1
#!"C:\Perl64\bin\perl.exe" 
use CGI; 
use strict; 
use Spreadsheet::ParseExcel; 

my $FileName = "C:\excel\Onsite_Report(15).xlsx"; 
my $parser = Spreadsheet::ParseExcel->new(); 
my $workbook = $parser->parse($FileName); 

die $parser->error(), ".\n" if (!defined $workbook); 

# Following block is used to Iterate through all worksheets 
# in the workbook and print the worksheet content 

for my $worksheet ($workbook->worksheets()) { 

    # Find out the worksheet ranges 
    my ($row_min, $row_max) = $worksheet->row_range(); 
    my ($col_min, $col_max) = $worksheet->col_range(); 

    for my $row ($row_min .. $row_max) { 
     for my $col ($col_min .. $col_max) { 

      # Return the cell object at $row and $col 
      my $cell = $worksheet->get_cell($row, $col); 
      next unless $cell; 

      print "Row, Col = ($row, $col)\n"; 
      print "Value  = ", $cell->value(),  "\n"; 

     } 
    } 
} 

Выдает ошибку File not found, но путь правильный. Пожалуйста посоветуй.
EDIT
добавил - warn -e $FileName ? "File exists":"File does not exist";
ERRORPerl - Файл не найден

Unrecognized escape \O passed through at perltest2.cgi line 6. 
File does not exist at perltest2.cgi line 10. 
File not found. 
+0

Невозможно воспроизвести проблему в моей системе (Win7). Если ошибка «Файл не найден», то это потому, что синтаксический анализатор не может найти ваш файл. Попробуйте добавить 'warn -e $ FileName? «Файл существует»: «Файл не существует» перед вашим оператором die для проверки того, что Perl может видеть файл. – TLP

+1

Кроме того, вы действительно должны «использовать предупреждения». – TLP

+0

Вы действительно используете 'C: \ excel \ Onsite_Report (15) .xlsx'? – RobEarl

ответ

3
Unrecognized escape \O passed through at perltest2.cgi line 6. 

Похоже, у вас есть:

my $FileName = "C:\excel\Onsite_Report(15).xlsx"; 

Perl видит две управляющие последовательности в этой строке: \e и \O. \e не вызывает ошибку, поскольку это является допустимым побег:

\e Escape character.

Но \O нет. Используйте одинарные кавычки, чтобы Perl не интерполировал экраны:

my $FileName = 'C:\excel\Onsite_Report(15).xlsx';