【问题标题】:Does Win32::OLE::Const->Load('Microsoft Excel'); depends on Excel versionWin32::OLE::Const->Load('Microsoft Excel');取决于 Excel 版本
【发布时间】:2020-03-21 03:48:33
【问题描述】:

我在 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!

最好的问候

【问题讨论】:

  • 你在两台机器上使用的是哪个版本的perl
  • @HåkonHægland 在有 Excel 2013 的机器上,版本是 (v5.26.3) MSWin64,另一个是 (v5.16.3) MSWin32-x86
  • print ref $xl,"\n" 给你什么?
  • @HåkonHægland 它什么也没提供,我还尝试在定义键的机器上打印 $xl 它在另一台机器中给出 HASH(...) 它什么也没提供

标签: perl win32ole


【解决方案1】:

经过搜索,我找到了解决方案。

它在第二台机器上给出 0 因为注册表中没有 win32 Excel 密钥。

解决方案是在HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046}\1.8\0\中添加win32密钥

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多