Использование VSTO в автономном приложении для доступа к листам Excel - PullRequest
1 голос
/ 08 апреля 2010

пытался исследовать это, но иногда мне кажется, что мне не хватает некоторых навыков поиска в Google ...

Я хочу разработать (автономное) приложение WinForms , которое использует автоматизацию для связи с Excel .Я уже знаю, как использовать Interop, но я думал, что инструменты VSTO обеспечат более удобный или изощренный способ сделать это.

Моя идея была:

  • Я мог бы создать новый автономный проект с подготовленными ссылками на Excel.
  • Я мог бы использовать более сложную объектную модель, предоставленную VSTO, для взаимодействия с Excel.

Однако мои выводы заставляют меня думать, что:

  • VSTO можно использовать только для создания надстроек / рабочих таблиц для Excel, , а не для создания автономныхapplication .
  • Нет более сложной объектной модели, чем та, которую предоставляет Interop (в которой есть такие уродливые вещи, как ошибка языкового стандарта, "Open (Missing, Missing, Missing ...)")метод и т. д.
  • Я нашел класс Worksheet и Workbook в пространстве имен VSTO, но, насколько я понимаю, они всегда относятся к классам CS для листов и рабочей книги, которые вы реализуете при определении Excelдобавить в или расширение книги.- Они не могут быть использованы в качестве удобных упаковщиков в автономном приложении.

Кто-нибудь может подтвердить эти утверждения или исправить меня, если я ошибаюсь?

Далее, если там следует можно использовать VSTO и его класс "Workbook" для загрузки книги Excel из автономного приложения, затем как как это сделать?

Thx, chiccodoro

Ответы [ 2 ]

2 голосов
/ 08 апреля 2010

VSTO предназначен для разработки надстроек Office, а не отдельных приложений.

Для автоматизации Office из внешнего приложения COM Interop по-прежнему является способом сделать это.Если вы можете использовать .NET 4.0 (и Visual Studio 2010), то у вас есть доступ к Именованным и необязательным аргументам , которые делают Interop гораздо более приятной вещью.

Например, в .NET 3.5 вы могли бы написать это:

Workbooks.Open(thisFileName,
        Type.Missing, Type.Missing, Type.Missing, Type.Missing,
        Type.Missing, Type.Missing, Type.Missing, Type.Missing,
        Type.Missing, Type.Missing, Type.Missing, Type.Missing,
        Type.Missing, Type.Missing)

, а в .NET 4.0 вы можете написать это:

Workbooks.Open(thisFileName)

Я не верю, что вы можете использовать объекты изпространство имен VSTO во внешнем приложении.

0 голосов
/ 12 апреля 2010

Тем временем я познакомился с еще одним набором инструментов, который делает программирование Office более удобным: VSTO Power Tools .Несмотря на то, что они созданы командой VSTO, их можно использовать и для автономных приложений.Они содержат методы расширения, которые допускают

Workbooks.Open(thisFileName)

. Тем не менее, они не решают несколько проблем, которые у меня были до сих пор, например,

  • Ошибка локали
  • Правильное освобождение всех COM-объектов, как только их ссылки выпадают из области видимости.
...