我试图在metacpan.org和SO上使用示例代码来使用Spreadsheet :: ParseExcel :: SaveParser插件,但是我无法定义模板(工作簿)。
我在新语句,引号,文件parh等方面进行了各种尝试-没有任何效果。我在模版语句后放一个模具,它显示错误消息。没有这个,我要么有一个$ template-> worksheet(),要么是worksheets()语句,如果我跳过死,我会得到不同的消息。我确认Excel文件的路径正确。我还用new()编辑了Spreadsheet :: ParseXLSX,并且代码越过了模板未定义的问题-当然,当我尝试执行AddCell时,它崩溃了。
use Spreadsheet::ParseExcel;
use Spreadsheet::ParseExcel::SaveParser;
my $saveParser = Spreadsheet::ParseExcel::SaveParser->new();
my $template = $saveParser->Parse("some Excel file verified to exist");
die "Error! Template not defined!\n" if (!defined($template));
死
use Spreadsheet::ParseExcel;
use Spreadsheet::ParseExcel::SaveParser;
my $saveParser = Spreadsheet::ParseExcel::SaveParser->new();
my $template = $saveParser->Parse("some Excel file verified to exist");
my $worksheet = $template->worksheet(0);
无法在../bin/update_tp.pl第nnn行的未定义值上调用方法“工作表”。如果我使用工作表名称而不是数字,也会出错。
很显然,我希望$ saveParser-> Parse命令返回一个有效的对象,以便我可以使用它-不能。仅供参考,我正在使用的所有模块的当前版本均为0.65,但WriteExcel(尚不相关)为2.4。
答案 0 :(得分:0)
通过阅读此模块的CPAN页面,您想跟踪一下Parse()函数可以使用的错误处理方式。查找并调整该错误处理,以使您了解为什么Parse()会失败。您关于“未定义值的工作表”的错误表明该调用失败。可能是您没有在转义文件路径,或者您没有对该文件的读取权限,还有很多其他原因导致Parse()失败。 Eww,只是走了过去看了看自己,对于该函数记录的错误处理还不够充分。也许尝试使用一些错误处理变量来消亡?参见https://perldoc.perl.org/perlvar.html#Error-Variables