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 密钥