Perl Spreadsheet :: ParseExcel无法parsing并返回undef

刚刚安装了Spreadsheet::ParseExcel模块,但遇到了问题。 看到一些相关的问题,但不完全相同。

 #!/usr/bin/perl -w use strict; use warnings; use Spreadsheet::ParseExcel; use Data::Dumper; my $bill = $ARGV[0] || die "Usage: $0 bill.xlsx\n"; my $parser = Spreadsheet::ParseExcel->new(); my $workbook = $parser->parse('Book2.xlsx'); print Dumper $workbook; for my $worksheet ( $workbook->worksheet() ) { } 

当我运行perl脚本时,出现以下错误:

 Can't call method "worksheet" on an undefined value at read.bill.xlsx.pl line 15. 

所以我甩了$workbook ,并得到:

 $VAR1 = undef; 

和翻车机parsing器显示一些数据。 这意味着$parser->parse失败。 有人知道为什么? 谢谢。

正如文档build议 ,你必须testing如果parse()返回undef和检查错误消息,

 my $workbook = $parser->parse('Book2.xlsx') // die $parser->error(); 

尝试这个:

 #!/usr/bin/perl -w use strict; use Spreadsheet::ParseExcel; my $bill = $ARGV[0] || die "Usage: $0 bill.xlsx\n"; my $parser = Spreadsheet::ParseExcel->new(); my $workbook = $parser->parse('Book2.xls'); if ( !defined $workbook ) { die $parser->error(), ".\n"; } for my $worksheet ( $workbook->worksheets() ) { } 

search后,我发现XLSX格式需要Spreadsheet :: XLSC而不是ParseExcel。 此外,parsing函数采用文件名,然后不需要$ parser-> parse的步骤。