刚刚安装了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;
和dumper解析器显示一些数据。这意味着$parser->parse
失败了。谁知道为什么?感谢。
答案 0 :(得分:1)
作为documentation suggest,您必须测试parse()
是否返回undef
并检查错误消息,
my $workbook = $parser->parse('Book2.xlsx') // die $parser->error();
答案 1 :(得分:1)
试试这个:
#!/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() ) {
}
答案 2 :(得分:1)
在谷歌搜索后,我发现XLSX格式需要Spreadsheet :: XLSC而不是ParseExcel。解析函数也采用文件名,然后不需要$ parser->解析步骤。