Используйте одну и ту же библиотеку объектов Microsoft.excel на разных компьютерах с разными версиями Office. - PullRequest
0 голосов
/ 17 декабря 2018

У меня Visual Studio 2013. Я добавляю ссылку на Microsoft Excel 16 (с офисом 2016), и это работало правильно для этого проекта.Но когда я использую этот проект на другом компьютере, содержащем Office 2013, я получаю недостающую ссылку.Можно ли решить эту проблему, не устанавливая одну и ту же версию офиса на разные компьютеры?

Ответы [ 2 ]

0 голосов
/ 17 декабря 2018

Если вы хотите опустить ссылки на библиотеки, вы можете динамически создавать приложения Excel с использованием позднего связывания.Но вы потеряете IntelliSense ...

C #

dynamic xlApp = Activator.CreateInstance(Type.GetTypeFromProgID("Excel.Application"));
var xlBook = xlApp.Workbooks.Open(@"C:\mybook.xlsx");
var xlSheet = xlBook.Sheets[1];
// Other code...

VB

Dim xlApp = CreateObject("Excel.Application")
Dim xlBook = xlApp.Workbooks.Open("C:\mybook.xlsx")
Dim xlSheet = xlBook.Sheets(1)
0 голосов
/ 17 декабря 2018

Если вы хотите продолжать использовать Excel Interop, не беспокоясь о версиях, вам понадобится оболочка типа NetOffice .Я широко использовал это в устаревшем коде и могу подтвердить, что он решает подобные проблемы.

Однако, как намекают @Jimi и @BenCamps, если вы можете делать то, что вам нужно, без использования взаимодействия, вам следует,Если вы просто выполняете экспорт, то работа с OpenXML или его оболочкой, такой как EPPlus (что здорово), будет иметь меньше накладных расходов и будет менее хрупкой.

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