我在使用相同的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");
答案 0 :(得分:2)
如果没有提供大量信息,只提供代码片段,很难说。
最大的嫌疑人是文件格式本身,因为Parse
方法没有返回$workbook
,解析器返回undef
我最近遇到过这样的问题,其中excel文件是一个非常新的格式版本。 (以.xlsx而不是.xls结尾)用MS Excel打开文件并保存为旧的excel格式就可以了。
您的第一个文件看起来好像是纯CSV文件,因此解析时没有问题。