Pr@mod Ответов: 3

Получение фабрики COM-класса для компонента с clsid...не удалось из-за следующей ошибки: 80040154


строка filepath = сервер.MapPath(@"~/MSME_Admin/CMA_Data/Book1.xls");
// Чтобы открыть существующий Excel из папки
Приложение ExcelObj = новый Excel.Приложение();
Рабочая Тетрадь WBook = ExcelObj.Рабочая тетрадь.Добавить(путь к файлу);
Рабочий Лист WSheet = (Excel.Рабочий Лист)WBook.Sheets.get_Item(1);
Диапазон = значение null;

Что я уже пробовал:

я получаю эту ошибку, почему приходит эта ошибка, Я не понимаю. Пожалуйста, дайте какое-нибудь решение.

3 Ответов

Рейтинг:
2

Jochen Arndt

Ошибка 0x80040154-это "класс не зарегистрирован".

Чтобы узнать, какой класс не зарегистрирован, мы должны были бы знать CLSID из Вашего сообщения об ошибке.

Поскольку это происходит при попытке использовать Excel Interop, я предполагаю, что Excel не установлен (должным образом) в вашей системе. Затем решение состоит в том, чтобы выполнить установку Excel / Office для (повторной)установки / ремонта.


Dave Kreskowiak

Существует гораздо большая проблема, чем просто установка Office. Офис не может быть использован по-взаимодействия в режиме нон-пользователей-интерактивные сессии, т. е. служб Windows и уж тем более не приложения ASP.NET .

Рейтинг:
1

F-ES Sitecore

Автоматизация Excel не поддерживается в разделе asp.net, вам нужно будет использовать какой-то другой способ манипулирования вашими файлами Excel, такими как EPPlus, XML SDK, Aspose, Excel ODBC Driver и т. д.


Рейтинг:
0

Richard Deeming

Ошибка 80040154 означает, что Office не установлен на сервере.

Вы также должны прочитать следующую статью базы знаний Майкрософт:

В настоящее время корпорация Майкрософт не рекомендует и не поддерживает автоматизацию приложений Microsoft Office из любого автоматического, неинтерактивного клиентского приложения или компонента (включая ASP, ASP.NET, DCOM и NT Services), поскольку Office может демонстрировать нестабильное поведение и/или взаимоблокировку при запуске Office в этой среде.


Поскольку вы пытаетесь прочитать старомодный документ Excel (.xls), вам нужно будет использовать NPOI:
GitHub - tonyqus/npoi: библиотека .NET, которая может читать/записывать форматы Office без установленного Microsoft Office. Нет COM+, нет взаимодействия.[^]

Для документов нового образца (.xlsx), есть несколько других альтернатив:


Ни один из них не использует Interop, и ни один из них не требует установки и лицензирования Office на вашем сервере.