Как получить доступ к Microsoft Excel 365 с помощью C # в Visual Studio

Я создал приложение, которое читает таблицы Excel и выполняет действия с данными. Я создал приложение с помощью Excel 2010 и 2013. Моя компания недавно перешла на Office 365. Теперь, когда я запускаю свое приложение, я получаю указанную ниже ошибку. Я предполагаю, что это как-то связано с Microsoft.Office.Interop.Excel, но я не могу найти никакой информации об этой ошибке и о том, как ее исправить.

«Не удалось получить фабрику классов COM для компонента с CLSID {00024500-0000-0000-C000-000000000046} из-за следующей ошибки: 80040154 Класс не зарегистрирован (исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))».


person Cass    schedule 06.11.2016    source источник
comment
возможно, вам стоит обновить инструменты разработчика Office.   -  person McNets    schedule 07.11.2016
comment
#mcNets - У меня установлены последние инструменты разработчика Office, которые я могу найти. Знаете ли вы, где находятся инструменты Office 365?   -  person Cass    schedule 07.11.2016


Ответы (2)


Если вам не нужно управлять самим приложением Excel, вам действительно не понадобится взаимодействие. См. Ответы на этот вопрос или this, чтобы узнать, как читать данные из листов xlsx. Также существует отличная статья о codeproject, в которой объясняется OleDb.

person Nomenator    schedule 06.11.2016
comment
#Nomenator - есть ли у вас опыт работы с этими вариантами? Что вы порекомендуете: Linq-to_Excel или OleDbConnection? - person Cass; 07.11.2016
comment
@Cass Я использую Linq-to-Excel, потому что он позволяет мне запрашивать файл excel, как если бы он был источником данных структуры сущностей после того, как я сопоставил файл с сущностями. Я не знаю, насколько это быстрее или медленнее, но удобство непосредственного взаимодействия данных с объектами и использования linq значительно ускоряет разработку. - person Nomenator; 07.11.2016
comment
#Nomenator - Вы знаете, что Linq-to-Excel работает только с файлами .xls? У меня есть файл xlsx, и я получаю эту ошибку: не удалось загрузить файл или сборку LinqToExcel, Version = 1.10.1.0, Culture = нейтральный, PublicKeyToken = 9c8ea65a58f03f1f или одну из его зависимостей. Была сделана попытка загрузить программу с неверным форматом. - person Cass; 07.11.2016
comment
@Cass Абсолютно работает с xlsx. Вы видите, что сборка недоступна. Возможно, содержимое пакета nuget не было загружено, возможно, зависимость в настройках вашего проекта указывает неправильный путь или, возможно, библиотеки, которые он использует, не установлены. Если бы вы попытались загрузить несовместимый файл, возникла бы другая ошибка. Эта статья здесь: johnatten.com / 2013/09/25 / подробно показывает, как использовать. - person Nomenator; 07.11.2016
comment
#Nomenator - в этих примерах похоже, что все основано на именах столбцов. Вы когда-нибудь делали что-нибудь, чтобы указать диапазон, например B8: U1023, для чтения данных? Мое приложение было создано, чтобы пользователь мог выбрать документ Excel, при необходимости конкретный диапазон, а затем код удалит все непечатаемые символы и создаст текстовый файл с разделителями каналов. - person Cass; 07.11.2016
comment
@ Касс, я никогда этого не делал. Ближайший ответ, который я могу найти, это прямо здесь: stackoverflow.com/q/13711280/2929539, но я не предлагаю нетабличная схема для листа Excel. - person Nomenator; 11.11.2016

Я столкнулся с тем же исключением, когда мой компьютер был обновлен до Office 365. В моем коде C # я использовал тестовые данные, которые ранее хранились в файле «.xlsx».

Я изменил имя файла Excel на «.xls» и запустил тот же код, который использовал Excel.Application и другие классы из библиотеки Microsoft.Office.Interop.Excel, он работал нормально.

person user8992796    schedule 22.11.2017