Question

#!"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";

        }
    }
}

Throws the error File not found, but the path is correct. Please advice.
EDIT
added - warn -e $FileName ? "File exists":"File does not exist";
ERROR

Unrecognized escape \O passed through at perltest2.cgi line 6.
File does not exist at perltest2.cgi line 10.
File not found.
Était-ce utile?

La solution

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

Looks like you have:

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

Perl sees two escape sequences in this string: \e and \O. The \e doesn't cause an error as it is a valid escape:

\e Escape character.

But the \O isn't. Use single quotes so Perl doesn't interpolate the escapes:

my $FileName = 'C:\excel\Onsite_Report(15).xlsx';
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top