Как я могу исправить InteropServices.COMException без установки Excel? - PullRequest
0 голосов
/ 04 октября 2018

У меня есть консольное приложение C #, которое создает электронные таблицы Excel.Я добавил в приложение пакет Interop.Excel NuGet.Когда я пытаюсь запустить его на виртуальной машине, я получаю исключение:

Получение фабрики классов COM для компонента с CLSID {00024500-0000-0000-C000-000000000046} не удалось из-за следующей ошибки: 80040154 Класс не зарегистрирован ...

Я пытался сделать платформу для x64 или x86, а не для любого процессора, но это не помогло.Установка Excel на ВМ не допускается.Есть ли способ решить без установки?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Если вам нужно взаимодействовать только с файлами XLS X , вы можете попробовать сторонние библиотеки, которые не зависят от Excel. XLSX - это открытый, основанный на XML формат (это zip-файл из множества XML), и ему уже более 10 лет.Существует много хороших библиотек с открытым исходным кодом хорошего качества, которые вы можете использовать для их обработки.

Я очень рекомендую EPPlus ( GitHub , NuGet , SO ), который был очень стабильным, многофункциональным и на величины быстрее, чем при использовании взаимодействий.

Если вам нужно взаимодействовать с устаревшими файлами XLS, то вам не повезло.Это старый проприетарный формат, который MS держал очень близко к их сердцу.Существуют сторонние библиотеки, которые могут работать с ними, но ни одна из хороших не является бесплатной (как в любом случае несколько лет назад).

0 голосов
/ 05 октября 2018

Извините, пакет взаимодействия COM не включает в себя само приложение, только вызываемые CLR функции, которые облегчают взаимодействие с приложением.Поскольку Microsoft Excel является лицензированным продуктом, его необходимо приобретать / устанавливать отдельно.

Нет бесплатного обеда, но может быть возможным для вас, чтобы использовать удаленное взаимодействие COM для вызова копии Excel, запущенной на вашем хост-компьютере, из виртуальной машины через пакет взаимодействия.По довольно очевидным причинам безопасности это не будет включено по умолчанию, но если вы используете это для целей автоматического тестирования, это может решить проблему такого рода использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...