无法在未定义的值上调用方法“工作表”

时间:2017-01-04 00:53:21

标签: excel perl parsing

我在使用相同的perl代码解析excel文件时遇到问题: 我收到这个错误:

  

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

有趣的是,如果我在预期的斜率xls文件之前解析另一个文件(延迟xls),我会使用perl代码。

以下是代码:

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");

1 个答案:

答案 0 :(得分:2)

如果没有提供大量信息,只提供代码片段,很难说。

最大的嫌疑人是文件格式本身,因为Parse方法没有返回$workbook,解析器返回undef

我最近遇到过这样的问题,其中excel文件是一个非常新的格式版本。 (以.xlsx而不是.xls结尾)用MS Excel打开文件并保存为旧的excel格式就可以了。

您的第一个文件看起来好像是纯CSV文件,因此解析时没有问题。