Запуск Excel на сервере - C # Interop Excel

мы хотим выполнить следующие операции (по порядку) с файлом шаблона Excel через C # .NET.

  1. Откройте шаблон Excel
  2. Чтение данных из представлений SQL и запись в лист в шаблоне Excel
  3. Установить именованный диапазон для данных, скопированных в
  4. Обновить сводную таблицу на основе именованного диапазона
  5. Защитите паролем и верните файл как загружаемый.

Ниже приведены рассматриваемые варианты: 1. Microsoft.Office.Interop.Excel - драйвер обеспечивает все функции, упомянутые выше, однако для драйвера требуется, чтобы на сервере был установлен клиентский инструмент Excel, что не является предпочтительным вариантом, поскольку мы не можем запросить для установки Excel во всех средах. 2. Сторонние предложения. Бесплатный драйвер под названием Excel Package Plus, казалось, удовлетворял почти всем нашим требованиям. Мы смогли сделать практически все из приведенного выше списка операций, кроме обновления сводной таблицы. 3. Запись макроса в существующий файл Excel для обновления сводной таблицы. Обновление будет происходить, когда файл открывается пользователем, вызывая задержку, а также требуется загрузить файл с обновленной сводной таблицей.

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


person bala    schedule 15.04.2016    source источник


Ответы (1)


Не используйте Interop на сервере. Я сделал это, и это кошмар - у вас будут зависания процессов, утечки памяти и собачья низкая производительность.

Я бы порекомендовал использовать EPPLUS для всего, где вы можете его использовать, и использовать Open XML SDK, чтобы открыть файл Excel и установить именованные диапазоны.

Open XML SDK - это низкоуровневый API для редактирования документов Offixe XML, включая Excel. С его помощью вы можете делать все, что можете делать в Office. Это довольно сложно, поэтому я бы порекомендовал использовать epplus везде, где вы можете, поскольку это позволяет избежать многих ошибок ручного редактирования в Excel.

Я помню инструмент, который мог бы создать код C # для создания документа, который вы ему передали, чтобы вы могли передать документ Excel с именованным диапазоном и посмотреть, как инструмент создает именованный диапазон в коде. Я думаю, что инструмент был включен в sdk

person Christian Sauer    schedule 15.04.2016