Невозможно привести com объект типа microsoft office interop excel applicationclass
How to solve “Unable to cast COM object of type Microsoft.Office.Interop.Excel.ApplicationClass’ to interface type ‘Microsoft.Office.Interop.Excel._Application’”
Question
“Unable to cast COM object of type Microsoft.Office.Interop.Excel.ApplicationClass’ to interface type ‘Microsoft.Office.Interop.Excel._Application’”this operation failed because the QueryInterface call on the com component for interface with IID '' failed due to the followinf error:Error loading type library/DLL. (Exception from HRESULT: 0x80029C4A (TYPE_E_CANTLOADLIBRARY)).
Not working in the follwing scenareo:
working in following scenareo :
tried solutions from google:
1)checked the registry key and fine it contains 1.9
2)repaired the office 16
3)compiled as ANY CPU ->excel working but app need to be run as 32 bit.
Is it problem with dll mapping , i didnt find separate dll for 32 bit or 64 bit microsoft.office.interop.dll
please suggest how to load proper dll so that export to excel should work on windows 10 , 64 bit os ,office 16 of 64 bit.code runs as 32 bit.
Answers
thanks for the reply .
In Specific to my case :
issue is resolved by deleting the existing configuration properties ->platform options (previously while creating soltion platforms x64 and anycpu ,settings are copied from x86 ).so even if i run as 64 or any cpu it behaves as 32 internally.so
all the target platform solution options were deleted and added freshly and for the setup ->changed the target from x86 to x64
1)right click on solution->configuration propertie->configuration manager->active solution platform->
x86 deletd
any cpu deleted
x64 deleted
2)again created fresh x86,x64, any cpu and compiled with all options.
3)select appname.setup->view->properties window->Target platform->x64
now working fine as expected .
- Proposed as answer by Deepak Saradkumar Panchal Microsoft contingent staff Tuesday, May 22, 2018 8:55 AM
- Marked as answer by babji v Tuesday, May 22, 2018 7:04 PM
- Edited by babji v Tuesday, May 22, 2018 7:04 PM
All replies
Just takes a click to give thanks for a helpful post or answer.
Please vote “Helpful” or Mark as “Answer” as appropriate.
Chris Ward
Microsoft Community Contributor 2012
yes , just now i had checked again and office is 2016 MSO and 64 bit .
and visual studio is 32 bit.
I didn't find 64 bit dlls anywhere.
thanks for the reply ,do i need to install visual studio also 64 bit , so that it will contin 64 bit dlll
In windows application ,export to excel functionality is not working in 64 bit windows10 , 64 bit office .
error is like not able to load library.Is it really dll problem?
currently using interop.excel and microsoft.office.interop.excel tried all versions in com.
please help me ,to identify issue root cause.
Well, you could just use CreateObject("Excel. Application") not use the interop library.
VS is always x32, but it can well create both x32 and x64 applications (so that is a non-issue).
So as a general rule, you will have to build both an x32 and x64 bit version of your application depending on what version of office they have.
I would get your project working as x64. Once working, you can try “any cpu”, but as a general rule you have to match the CPU with the intended target office bit size.
Last but not least?
So on your test machine, force the project to the same bit size as office. Get that working. You can then try on a machine with x32 office, but some risk is involved, and it is a bridge you can attempt to cross once you get the application working with your current setup.
В этом коде использовалась «Библиотека объектов Microsoft Excel 12.0», и я дал ссылку на Microsoft.Office.Interop.Excel.
Тем не менее, я не мог избавиться от этой ошибки - я считаю, что у нее есть собственное быстрое решение.
Я немного покопался на этом сайте и наткнулся на это решение: тип взаимодействия не может быть встроен
Однако я не мог понять, поэтому не мог реализовать то, что было предложено в качестве решения.
Любая помощь очень ценится.
Если это не ошибка кода, удалите указанный ниже ключ из реестра.
Пуск -> Выполнить -> regedit -> HKEY_CLASSES_ROOT -> TypeLib -> -> 1.8 / 1.7 (Удалить это)
Решение. Эту проблему можно решить, удалив недопустимый раздел реестра, оставшийся от более поздней версии Office. Следуйте вышеуказанным шагам.
Причина: эта проблема вызвана оставшимся разделом реестра, если вы понизили версию Microsoft Office с Office 2010 до Office 2007 или с Office 2013 до Office 2010 или 2007.
Сообщите мне, если вам не помогло это решение
Microsoft Office 365
Я запускал Microsoft Office 365 с Windows 10 и безуспешно пробовал упомянутые решения для удаления раздела реестра.
Я пошел к панели управления, пытаясь восстановить пакет Office 365.
Выбрал быстрый ремонт
Еще раз попробовал мою программу, и все заработало!
- 1 Это была моя проблема, после обновления мой com-объект не работал, мне пришлось восстановить его после завершения установки office 360 . какая боль.
- 4 Это решение сработало для меня. У меня даже не было записей reg, указанных в принятом ответе.
- 1 В принятом ответе у меня в реестрах стояла версия 1.9. Я не хотел его удалять, так как говорилось, что удалите «1.8» или «1.7». В любом случае, я попробовал этот быстрый ремонт, и все работает нормально! Независимо от того, что реестр / очистка были изменены при ремонте, очевидно, что это делается во время этой процедуры восстановления. Спасибо, Алекс!
- 1 Также проверьте в разделе «Программы и компоненты», когда Office был «установлен на». Я выдергивал волосы, потому что я только что обновил часть кода экспорта, и программа начала давать сбой и продолжала давать сбой даже после отката на всех, но машина разработчика. Оказывается, последний патч Microsoft Office что-то сломал, потому что Office был «Установлено» сегодня, хотя я установил его 3 года назад. Быстрый ремонт решил это.
Я уверен, что ответы на этот вопрос (и аналогичные вопросы), предлагающие редактировать реестр и удалять старые ссылки на версии Office, которых больше нет на компьютере верны.
Я добавляю этот ответ только потому, что сейчас пинаю себя. Два часа потратил на поиски ключей в реестре и ни к чему не привело. Последний бросок кости заключался в том, чтобы попробовать простое ремонт в Microsoft Office и вдруг моя ошибка исчезла.
- Благословения вам, я застрял с последних 45 минут
Windows 7 x64 / Office 365 (16.0.x) 32-разрядная / VS 2019
Был проверен Реестр -> HKEY_CLASSES_ROOT-> TypeLib, ищем существует только одна запись «1.9», больше ничего.
Проверка проблемы с помощью Process Monitor, обнаруживающая возможную проблему с поиском и чтением из (многие результаты с «ИМЯ НЕ НАЙДЕНО»).
Был произведен «Быстрый ремонт» из Ремонтного офиса из Панели управления, после того как эта проблема исчезла.
P.S> Была произведена проверка "после обработки" Process Monitor - теперь файл берется из первым зондом.
Компьютер был обновлен до 64-разрядной версии Office 2016, и интерфейс COM генерировал исключения при вызове из 32-разрядного приложения. У него не было старых записей TypeLib, подобных тем, что были в ответе Джайеша.
Сравнение трассировки ProcessMonitor с работающей машиной с Office 2016 привело к тому, что в
HKEY_CLASSES_ROOT \ Wow6432Node \ TypeLib \
Рабочая машина проверит несуществующий ключ реестра и вернет
На отказавшей машине был ключ реестра, но вскоре после этого возникло исключение.
После многократного удаления раздела реестра, повторного запуска трассировки и удаления следующего отказавшего ключа функциональность COM-интерфейса была восстановлена.
- Попробовав все, что я мог придумать, я прочитал это и понял, что мой компилятор настроен на 32-битный. Снятие отметки с этого поля было последней частью головоломки.
В моем случае я удаляю regedit в:
и проблема решена.
В реестре были 1.7 и 1.8. Решено удалением:
Используя тот же самый код, у меня возникла такая же проблема на ноутбуке, когда все работало нормально на другом. Я пробовал различные решения, найденные здесь и там в Интернете, но что в итоге сработало, так это явное определение использования не 32-битной версии библиотеки. Для этого в Visual Studio мне пришлось установить, а затем снять флажок «Предпочитать 32-разрядный» в разделе сборки конфигурации проекта, который добавил
Unable to cast COM object of type 'Microsoft.Office.Interop.Excel.ApplicationClass'
I've recently uninstalled Office 2016 and installed Office 365. Since then " Unable to cast COM object of type 'Microsoft.Office.Interop.Excel.ApplicationClass' " an error is generated (Image attached)
I've searched web but didn't get any idea on how to solve this error.
hi
did you get any solution of this issue?
2 Answers
Hi VenkataRamanaNori-1428,
This problem is mostly caused by incorrect COM Interop settings in the Windows registry. This can be caused by installing a newer version of Microsoft Office, and then removing it and installing an older version instead. There are other ways this could happen.
If this is not a code related error than please remove below given key from registry.
Please follow steps below:
Start-->Run --> regedit --> HKEY_CLASSES_ROOT-->TypeLib--> --> 1.8/1.7 (Delete this)
If not successful, you can try to repaire your Office 365 in control panel. Then, try again. If the problem still exists, you can completely uninstall, reboot, and then reinstall Office.
Here are also some similar threads you can refer to.
unable to cast COM object of type 'microsoft.Office.Interop.Excel.ApplicationClass' to 'microsoft.Office.Interop.Excel.Application'"
How to solve “Unable to cast COM object of type Microsoft.Office.Interop.Excel.ApplicationClass’ to interface type ‘Microsoft.Office.Interop.Excel._Application’”
How to solve “Unable to cast COM object of type Microsoft.Office.Interop.Excel.ApplicationClass' to interface type 'Microsoft.Office.Interop.Excel._Application'”
Best Regards,
Daniel Zhang
If the response is helpful, please click "Accept Answer" and upvote it.
Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.
Funcionou para mim, mas na verdade eu apaguei a pasta 1.9 pois minha versão funcional do office era a 2013. Muito obrigado.
Невозможно преобразовать COM-объект типа «Microsoft.Office.Interop.Excel.ApplicationClass» к типу интерфейса «Microsoft.Office.Interop.Excel._Application». Эта операция завершилась неудачно, поскольку вызов QueryInterface для COM-компонента для интерфейса с IID «» завершился неудачно из-за следующей ошибки: Ошибка загрузки библиотеки типов / DLL. (Исключение из HRESULT: 0x80029C4A (TYPE_E_CANTLOADLIBRARY)).
Но в моем случае в редакторе реестра всего 1 ключ "1.8". Другого ключа нет (как показано на скриншоте ниже)
Я пробовал код с моим локальным IIS, и он работает нормально.
На сервере установлен MS Office 2013. Раньше был установлен MS Office 2010, но я обновился до 2013 года.
Взаимодействие с Excel обычно не рекомендуется для выполнения на стороне сервера.
Excel следует использовать на сервере нет. Представьте, что у вас есть 10 одновременных вызовов, каждый из которых запускает новый экземпляр Excel. Используйте такую библиотеку, как EPPlus, для создания настоящих файлов xlsx. Это может быть так же просто, как написать sheet.Cells.LoadFromCollection(someList)
Кстати, эта ошибка может означать, что Excel не установлен на сервере или что была найдена неправильная версия.
На сервере установлен MS Office? На многих серверах этого нет. А знаете ли вы, что взаимодействие использует полный экземпляр офиса, работающий в фоновом режиме, включая всю необходимую память и ресурсы процессора? Обычно это не лучший выбор для веб-приложений, которые нужно хорошо масштабировать.
Кстати, для установки Excel на сервере, вероятно, потребуется лицензия для каждого конечного пользователя. Это просто так не используется
На сервере установлен MS Office 2013. Раньше это был 2010 год, модернизировали до 2013 года.
Вам не следовало обновляться - Office 2010 по-прежнему остается самой стабильной версией . В любом случае я согласен с другими комментариями о том, что взаимодействие Office должно использоваться на стороне сервера нет. На этот счет есть статья в базе знаний. Вместо этого рассмотрите возможность использования формата файла Open XML с помощью Open XML SDK или аналогичной библиотеки.
Дорогие форумчане, написал программку для офиса, закинул на сервер, чтобы все могли пользоваться и столкнулся с проблемой.
Дело в том, что там где Я ее писал был офис 2016 и на компьютерах с другой версией вылетала ошибка, так же вылетала ошибка если версия word, excel не активирована на компьютере.
Пока вижу 2 пути решения:
1 - переустановить всем офис 2016
2 - попытаться в реестре поковыряться (сомнительный)
Так вот, есть ли способ "вшить" interop в саму программу или иной способ обойти данную. ммм. "загвоздку"? =)
P.S. : Желательно не сильно кардинальный, чтобы не пришлось переделывать всё.
Microsoft.Office.Interop.Excel.Application процессы Excel в памяти компьютера
Добрый день, коллеги! Программа работает с файлами Excel. В каждой процедуре я указываю, что.
Работа с Excel через Microsoft.Office.Interop.Excel
Необходимо реализовать програмку взаимодействующую с Excel в режиме реального времени. Проблем.
Не могу записать в файл Excel при Microsoft.Office.Interop.Excel.Application.Visible = False
Коллеги, доброго времени суток. Столкнулся с такой проблемой. Не могу записать в файл, когда.
Работа с word и excel (Interop)
Добрый вечер всем. Появился у меня вопрос по моему проекту. Написал я небольшую программку. Все.
Zhivoder, используйте "позднее связывание", тогда отпадет привязка к версии Interop.
или же использовать библиотеку Interop от Офиса 2010, тем самым все следующие версии офиса будут с ней совместимы.
Думаю сейчас редко встретишь офис 2007, хотя, если есть, то лучще тогда версию 12 библиотеки использовать.
Yury Komar, можно чуть подробнее, что за "позднее связывание"?
А библиотеку можно включить в саму программу?
Добавлено через 17 минут
по первому вопросу нашел информацию читаю
Zhivoder, Вам ненужно носить эту библиотеку "с собой", она есть в установленном офисе, просто удаляете ссылку на вашу библиотеку от 2016-го офиса, устанавливаете необходимый NuGet пакет, ничего в коде менять не придётся.
Так как проект будет ссылаться на библиотеку от офиса 2010, то все последующие имеют обратную совместимость и успешно будут запускаться и работать.
Позднее связывание неудобно при написании кода и отладке.
Если нет, используйте, вместо той, что сейчас используете, те, что я выше приложил. Повторюсь, ненужно их таскать с EXE'шником
Yury Komar, ссылку на библиотеку сделал, те, что были на 16 оффис удалил, проблема не ушла, вываливается исключение на других версиях:
может Я чего-то не так сделал?)
Добавлено через 2 минуты
может имело смысл 12 версию поставить. сейчас попробую
Читайте также: