刚安装了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;转储解析器显示一些数据。这意味着$parser->parse失败了。有人知道为什么吗?谢谢。
发布于 2014-09-25 14:54:42
作为documentation suggest,您必须测试parse()是否返回undef并检查错误消息。
my $workbook = $parser->parse('Book2.xlsx') // die $parser->error();发布于 2014-09-25 15:09:48
试试这个:
#!/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() ) {
} 发布于 2014-09-25 15:51:04
在搜索之后,我发现XLSX格式需要Spreadsheet::XLSC而不是ParseExcel。同样,parse函数接受文件名,然后不需要$parser->parse的步骤。
https://stackoverflow.com/questions/26032389
复制相似问题