Win32::OLE::Const->加载('Microsoft Excel');取决于 Excel 版本
Does Win32::OLE::Const->Load('Microsoft Excel'); depends on Excel version
我在 perl 中使用 Win32::OLE::Const->Load()
:
$xl = Win32::OLE::Const->Load('Microsoft Excel');
然后我测试 scalar(keys %{$xl})
是否为零:
if (scalar(keys %{$xl})==0) {
return False;
}
else {
return True;
}
我在支持 Microsoft Excel 2003 的机器上测试了这段代码,它给出了 True
,但是当我在有 Microsoft Excel 2013 的机器上测试了相同的代码时,它给了我False
!
我还在第一台机器上打印了scalar(keys %{$xl}
,它给出了2023,在第二台机器上是0!
最好的问候
经过搜索我找到了解决方案。
它在第二台机器中给出 0,因为注册表中没有 win32 Excel 密钥。
解决方案是在 HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046}.8[=10=]\
中添加 win32 密钥
我在 perl 中使用 Win32::OLE::Const->Load()
:
$xl = Win32::OLE::Const->Load('Microsoft Excel');
然后我测试 scalar(keys %{$xl})
是否为零:
if (scalar(keys %{$xl})==0) {
return False;
}
else {
return True;
}
我在支持 Microsoft Excel 2003 的机器上测试了这段代码,它给出了 True
,但是当我在有 Microsoft Excel 2013 的机器上测试了相同的代码时,它给了我False
!
我还在第一台机器上打印了scalar(keys %{$xl}
,它给出了2023,在第二台机器上是0!
最好的问候
经过搜索我找到了解决方案。
它在第二台机器中给出 0,因为注册表中没有 win32 Excel 密钥。
解决方案是在 HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046}.8[=10=]\