У кого-нибудь есть хороший пример управления несколькими экземплярами Excel из приложения .Net? - PullRequest
2 голосов
/ 18 сентября 2008

У нас есть приложение на основе Excel 2002 / XP, которое взаимодействует с SQL 2000/5 для обработки довольно сложных актуарных вычислений. Приложение хорошо выполняет свои функции, но им сложно управлять.

Мы пытаемся создать приложение или службу «контроллера», которые могут управлять и контролировать эти различные экземпляры Excel (команды запуска / остановки / обработки и т. Д.), Но, к сожалению, это немного кошмар InterOp.

Есть ли у кого-нибудь хороший (то есть работающий) пример того, как сделать что-то подобное в VB.Net или C #?

Ответы [ 4 ]

3 голосов
/ 18 сентября 2008

Не делай этого!

Мы неделями пытались заставить что-то подобное работать, и оно просто не ведет себя так, как рекламируется. Даже не начинай - сдавайся немедленно!

Единственные варианты, которые у вас действительно есть, это тяжелая реализация на основе MOSS на стороне сервера - службы Excel (Web) (они называют это как-то так). Интерфейс COM Excel на базе Windows в значительной степени мертв и будет заменен MOSS.

Другой вариант - использовать SpreadsheetGear. Это действительно фантастический продукт

  1. Легко быстро
  2. Движок отделен от пользовательского интерфейса, поэтому вы можете использовать его для работы с сервером Excel (без офиса)
  3. Довольно дешево
  4. Имеет API, похожий на существующий API-интерфейс Excel COM, поэтому перемещение кода по нему относительно просто

Все зависит от формул, которые вам нужны в вашей электронной таблице. Посмотрите на список формул для Spreadsheet Gear и, если есть совпадение, попробуйте.

2 голосов
/ 27 сентября 2008

Interop работает нормально, за исключением того, что вы всегда получаете ссылки на объекты Excel, которые не были выпущены, поэтому экземпляры Excel не закрываются. В следующей статье базы знаний объясняется, почему:

http://support.microsoft.com/default.aspx/kb/317109/EN-US/

Вы можете избежать этой проблемы, если у вас есть очень тщательно написанный код для ограниченного набора сценариев взаимодействия. Но в общем случае очень трудно заставить его работать надежно.

1 голос
/ 18 сентября 2008

Мы написали службу, которая управляет одним экземпляром Excel 2003. Нам никогда не удавалось добиться чистого закрытия экземпляров Excel, поэтому мы запускаем один экземпляр при первом обращении к службе и используем только его, сериализуя клиентские запросы.

1 голос
/ 18 сентября 2008

Возможно, вы захотите взглянуть на этот продукт: http://www.spreadsheetgear.com/products/spreadsheetgear.net.aspx

Это все управляемый код и прямые библиотеки .NET. Нет головных болей InterOp. Я сам этим не пользовался, но слышал очень хорошие вещи от людей в мире финансов.

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