我正在尝试使用Spreadsheet :: ParseExcel打开.XLS文件,但我无法获取工作表对象。当我打印工作表名称时,没有任何内容被打印。工作表名称使用文件名进行映射,并在我们更改文件名时进行更改。文件先前在excel中以保护模式打开,但随后我进行了设置更改,现在使用Excel正常打开。
我尝试了两种变体,第一种是:
my $parser = Spreadsheet::ParseExcel->new() or die($_);
my $newPath = 'C:\Users\MG\Desktop\WorkBook.XLS';
my ($filename, $parentdir, $extension) = fileparse($newPath, qr/\.[^.]*$/);
my $workbook = $parser->parse($newPath);
if ( !defined $workbook ) {
die $parser->error(), ".\n";
}
my $sheet = $workbook->worksheet($filename);
print $sheet->get_name();
上面的代码给出了错误 - 无法调用方法" get_name"在...上 未定义的值
第二个变体是:
my $parser = Spreadsheet::ParseExcel->new() or die($_);
my $newPath = 'C:\Users\MG\Desktop\WorkBook.XLS';
my $workbook = $parser->parse($newPath);
if ( !defined $workbook ) {
die $parser->error(), ".\n";
}
my $sheet = $workbook->worksheet(0);
print $sheet->get_name();
在上面的代码中,我没有得到任何输出,甚至没有任何错误。
如果我在系统中打开它后将此文件另存为.xls,则上述代码也可以使用。