Win32 :: OLE :: Const-> Load ('Microsoft Excel'); зависит от версии Excel - PullRequest
0 голосов
/ 19 марта 2020

Я использую Win32::OLE::Const->Load() в perl:

$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!

С наилучшими пожеланиями

1 Ответ

1 голос
/ 20 марта 2020

после поиска я нашел решение.

это дает 0 во второй машине, потому что в реестре нет ключа win32 Excel.

решение добавляет ключ win32 в HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046}\1.8\0\

...