不能调用未定义值的方法“工作表”

我有一个问题parsing相同的Perl代码中的Excel文件:我得到这个错误:

“无法调用方法”工作表“上一个未定义的值在./parse_pathsim_results.pl行223”

有趣的是,在perl代码中,如果我在parsing其他文件(延迟xls)之前parsing了xls文件,

这里是代码:

use Spreadsheet::ParseExcel::SaveParser; $input_delay_csv_file = "./presto/prs/c2x_delay.xls"; $input_slope_excel_file = "./presto/prs/c2x_slope.xls"; $slope_parser = Spreadsheet::ParseExcel::SaveParser->new(); $delay_parser = Spreadsheet::ParseExcel::SaveParser->new(); 

如果我使用以下两行代码,则代码有效,但我不想。

 $workbook = $delay_parser->Parse("$input_delay_csv_file"); $worksheet = $workbook->worksheet("Sheet1"); 

如果上面两行被注释,这就是它产生问题的地方。

 $new_workbook = $slope_parser->Parse("$input_slope_excel_file"); $worksheet = $new_workbook->worksheet("Sheet1"); 

没有你给你的代码很多信息和只是片段,很难说。

伟大的嫌疑犯是文件格式本身,因为Parse方法不返回一个$workbook ,parsing器返回undef

我最近有一个这样的问题,其中Excel文件是一个相当新的格式版本。 (以.xlsx而不是.xls结尾)使用MS Excel打开文件并保存为旧的Excel格式。

您的第一个文件看起来像是一个普通的CSV文件,因此parsing没有问题。