以前在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);
是否需要安装任何组件?
答案 0 :(得分:1)
激活ms office后问题解决了。
答案 1 :(得分:-1)
在代码的最后一行,您尝试在对象 $ book 上调用工作表。因此,错误实际上是在告诉您$ Book是 undefined - 或者更直接地说,您尝试使用的变量中没有任何内容。
要明确地找到答案,你可以;
(1)将use strict;
和use warnings;
添加到代码的顶部,这样perl在看到常见错误时会更加详细。
(2)添加use Data::Dumper
(在代码顶部),然后在第二行添加print Dumper($Excel, $fileName);
(3)通过在命令行中添加-d
,然后键入 help 命令,以调试模式运行程序。您需要n
移动到代码的下一个语句,并p
检查变量的内容。
查看您提供的内容,错误之前的行是打开方法调用,该调用可能已失败 - 可能是因为 $ fileName 变量为空或包含名称一个不存在的文件。您可以通过替换
来检查是否是这样my $Book = $Excel->Workbooks->Open($fileName) ;
与
my $Book = $Excel->Workbooks->Open($fileName) // die "Open returned an undefined book\n" ;
如果Open(或线路上的任何其他内容)失败,将立即退出并显示错误消息。
答案 2 :(得分:-1)
“Perl:无法调用方法”错误“未定义值上的工作表”
是因为您的电子表格是在.xlsx中创建的,您需要将工作表保存在.xls中并再次运行才能生效!
源: