Как Вы используете серверную сторону Excel?

Клиент хочет к "сети - позволяют" вычислению электронной таблицы - пользователь указать значения определенных ячеек, затем показать им получающиеся значения в других ячейках.

(Они НЕ хотят показывать пользователю "подобный электронной таблице" интерфейс. Это не вопрос о UI.)

У них есть огромная электронная таблица с большим количеством вычислений по многим, многим листам. Но в конце имеют значение только две вещи - (1) Вы помещаете числа в пару ячеек на одном листе и (2) Вы получаете соответствующие числа от пары ячеек в другом листе. Остальная часть его является черным квадратом.

Я хочу представить UI пользователю для введения номеров, которые они хотят, затем я хотел бы программно открыть файл Excel, определить номера, сказать его re-calc и считать результат.

Действительно ли это возможно/желательно? Существует ли коммерческий компонент, который делает это легче? Их ловушки, я не рассматриваю?

(Я знаю, что могу использовать Автоматизацию делопроизводства, чтобы сделать это, но я знаю, что не рекомендуется сделать ту серверную сторону, так как это пытается работать в контексте пользователя, и т.д.),

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

13
задан Robert Harvey 20 August 2019 в 15:11
поделиться

7 ответов

Вы определенно не хотите использовать interop на стороне сервера, он плохо достаточно использует его в качестве клуджа на стороне клиента.

Я вижу две опции:

Выясните логику электронной таблицы. Это может принести пользу Вам в долгосрочной перспективе путем создания бизнес-логики известным количеством, и в ближайшей перспективе можно найти, что существуют на самом деле ошибки в электронной таблице (я встретился с тоннами электронных таблиц монстра, используемых в течение многих лет, которые, оказывается, имеют простые ошибки в них - все просто предположили, что ответы должны быть правильными),

Оцените SpreadSheetGear.NET, который является в основном заменой для interop, который делает все это без Excel (это копирует огромный блок невидимой логики Excel и IO в.NET),

7
ответ дан 1 December 2019 в 22:24
поделиться

Это возможно, но не желательно (и официально неподдерживаемый).

Можно взаимодействовать с Excel через COM или Primary Interop Assemblies.NET, но это предназначено, чтобы быть клиентским процессом.

На стороне сервера, никаком дисплее или рабочем столе доступно, и любые неожиданные диалоговые окна (например), заставят Ваше веб-приложение зависнуть – Ваше приложение будет вести себя облупленное.

Кроме того, присоединение процесса Excel к каждому запросу не является точно подходом низкого ресурса.

Разработка черного квадрата и перереализация его на надлежащем языке программирования ясно лучше (как в "более надежном и быстрее") опция.

Связанное чтение: KB257757: Соображения для Автоматизации серверной стороны Office

8
ответ дан 1 December 2019 в 22:24
поделиться

Самый простой способ сделать это могло бы быть к:

Загрузите рабочую книгу Excel на Google Docs - это очень чисто, по моему опыту,

Используйте Данные электронных таблиц Google API, чтобы обновить данные и возвратить числа.

Вот ссылка для запущения Вас на этом, если Вы хотите пойти что направление:

http://code.google.com/apis/spreadsheets/overview.html

1
ответ дан 1 December 2019 в 22:24
поделиться

Хотя это - конечно, возможное использование ASP.NET, это очень нецелесообразно. Это неприступно и подвержено ошибкам параллелизма.

Ваш лучший выбор состоит в том, чтобы проанализировать вычисления электронной таблицы и копировать их. Теперь, предоставленный, Ваш бизнес не собирается любить время, которое требуется, чтобы сделать это, но это (по-видимому), даст им более применимую систему.

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

Править: Если Ваши заинтересованные стороны действительно настаивают на том, чтобы использовать серверную сторону Excel, я предлагаю, чтобы Вы хорошо рассмотрели Excel Services, как @John Saunders предполагает. Это не может получить Вас все, что Вы хотите, но это получит Вас вполне немного и должно решить некоторые проблемы, Вы закончите с попыткой сделать это серверная сторона с ASP.NET.

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

Я все еще предлагаю, чтобы Вы пододвинули обратно в пользу кодирования всей Вашей логики в отдельном модуле.NET. Тем путем можно использовать его и серверная сторона и клиентский. Excel может легко передать вычисления COM-объекту, и можно очень легко опубликовать библиотеку.NET как COM-объекты. В конце у Вас было бы намного больше удобной в сопровождении и применимой архитектуры.

4
ответ дан 1 December 2019 в 22:24
поделиться

Пренебрежение обсуждения, имеет ли смысл управлять листом Excel на серверной стороне, один способ выполнить это, было бы, вероятно, похоже на принятие

Microsoft.Office.Interop.Excel.dll

Пользуясь этой библиотекой, можно сказать Excel открывать Spreadsheet, изменение и читать содержание из.NET. Я пользовался библиотекой в приложении WinForm, и я предполагаю, что она может также использоваться из ASP.NET.

Однако, считайте проблемы параллелизма уже упомянутыми... Однако, если к листу нечасто получают доступ, почему нет...

1
ответ дан 1 December 2019 в 22:24
поделиться

Позвольте мне быть более непреклонным, чем другие были: не используйте серверную сторону Excel. Это предназначается, чтобы использоваться в качестве настольного приложения, означая, что это не предназначается, чтобы использоваться от случайных различных потоков, возможно несколько потоков за один раз. Вы - более обеспеченная запись Вашей собственной электронной таблицы, чем попытка использовать Excel (или какое-либо другое десктопное решение Office) формирует сервер.

Это - одна из причин, что Excel Services существует. Быстрый поиск на MSDN поднял эту ссылку: http://blogs.msdn.com/excel/archive/category/11361.aspx. Это - список категории, поэтому содержит список сообщений в блоге на предмете. См. также Microsoft. Office. Excel. Сервер. Пространство имен WebServices.

1
ответ дан 1 December 2019 в 22:24
поделиться

Это кажется, что Вы говорите, что у пользователя есть электронная таблица, открытая в их локальной системе, и Вы хотите, чтобы веб-сайт управлял той локальной электронной таблицей?

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

То, что можно сделать, создают веб-сервис, чтобы сделать вычисления и добавить некоторый vba или код vsto к листу Excel, чтобы говорить с тем сервисом.

0
ответ дан 1 December 2019 в 22:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: