Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl电子表格::ParseExcel无法分析并返回undef_Excel_Perl_Parsing_Spreadsheet - Fatal编程技术网

Perl电子表格::ParseExcel无法分析并返回undef

Perl电子表格::ParseExcel无法分析并返回undef,excel,perl,parsing,spreadsheet,Excel,Perl,Parsing,Spreadsheet,刚刚安装了电子表格::ParseExcel模块,但出现了问题。参见一些相关问题,但不完全相同 #!/usr/bin/perl -w use strict; use warnings; use Spreadsheet::ParseExcel; use Data::Dumper; my $bill = $ARGV[0]

刚刚安装了
电子表格::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
失败。有人知道为什么吗?谢谢。

As,您必须测试
parse()
是否返回
undef
,并检查错误消息

my $workbook = $parser->parse('Book2.xlsx') // die $parser->error();
同样,您必须测试
parse()
是否返回
unde
,并检查错误消息

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() ) {

} 
试试这个:

#!/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() ) {

} 

在谷歌搜索之后,我发现XLSX格式需要电子表格::XLSC而不是ParseExcel。此外,解析函数采用文件名,然后不需要$parser->parse的步骤。

在谷歌搜索之后,我发现XLSX格式需要电子表格::XLSC而不是ParseExcel。此外,解析函数采用文件名,无需执行$parser->parse的步骤。

谢谢,我得到了:找不到Excel数据。不过,它确认了问题是$parser->parse。谢谢,我得到了:找不到Excel数据。然而,它确认了的文档中的问题是$parser->parse。模块无法读取Excel 2007 Open XML XLSX格式的文件。请参阅的文档中的模块。模块无法读取Excel 2007 Open XML XLSX格式的文件。请参阅模块。