Perl:无法对未定义的值调用方法 "Worksheets"



以前在WinXP和Win7上运行良好,但在移动到Win10后,它显示"Perl:无法在未定义的值上调用方法"工作表"错误。

my $Excel = Win32::OLE->GetActiveObject('Excel.Application') 
         || Win32::OLE->new('Excel.Application','Quit');
my $Book  = $Excel->Workbooks->Open($fileName) ;
my $Sheet = $Book->Worksheets(1);

需要安装任何组件吗?

激活 ms office 后问题已解决。

在代码的最后一行中,您尝试在对象$book上调用工作表。因此,该错误有效地告诉您$Book是未定义的 - 或者更直白地说,您尝试使用的变量中没有任何内容。

要明确找出答案,您可以;

(1)在代码顶部添加use strict;use warnings;,这样perl在看到常见错误时会更加冗长。

(2) 添加use Data::Dumper(在代码顶部),然后在倒数第二行添加print Dumper($Excel, $fileName);

(3) 通过在命令行中添加-d在调试模式下运行程序,然后键入 help 命令。 您需要n移动到代码的下一条语句,p检查变量的内容。

查看您提供的内容,错误前面的行是可能失败的 Open 方法调用 - 可能是因为 $fileName 变量为空或包含不存在的文件的名称。 您可以通过替换来简单地检查是否是这样

my $Book  = $Excel->Workbooks->Open($fileName) ;

my $Book  = $Excel->Workbooks->Open($fileName) // die "Open returned an undefined bookn" ;

如果打开(或行上的任何其他内容)失败,它将立即退出并显示错误消息。

错误"

Perl:无法在未定义的值上调用方法"工作表"

是因为您的电子表格是在.xlsx中创建的,您需要将工作表保存在.xls中并再次运行它会起作用!

源:

无法对未定义的值调用方法"工作表"

最新更新