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的步骤。