Лучший способ заполнения таблицы Excel на веб-сервере в ASP.NET, чем взаимодействие? - PullRequest
3 голосов
/ 06 ноября 2008

Есть ли лучший способ заполнить электронную таблицу на веб-сервере (используя asp.net), чем при взаимодействии?

РЕДАКТИРОВАТЬ: я не очень ясно, что мне нужно:

У меня есть шаблон, который я должен использовать, предоставленный нашим клиентом. В шаблоне есть несколько макросов, которые защищены паролем, к которым у меня нет доступа, поэтому я не могу создать файл Excel. Я застрял при обновлении файла Excel 2003.

Ответы [ 8 ]

1 голос
/ 06 ноября 2008

Проверить этот проект:

ExcelPackage: создание файла формата Office Open XML .

Отлично подходит для создания электронных таблиц формата Excel 2007.

1 голос
/ 06 ноября 2008

Оформить SpreadsheetGear . Этот компонент позволит вам управлять электронными таблицами Excel 2007, выполнять макросы и обновлять электронные таблицы из ADO.Net. Он не требует установки Excel на сервере во взаимодействии.

На сайте есть хороший пример кода, который вы можете просмотреть. Мы развернули приложение внутри него, и оно отлично работает.

1 голос
/ 06 ноября 2008

Документы Office 2007 (Word, PowerPoint и Excel) основаны на форматах OpenXML. Это просто zip-файлы с кучей XML и бинарных частей (думаю, файлов) внутри. Вы можете открыть их с помощью API упаковки (System.IO.Packaging в WindowsBase.dll) и управлять ими с помощью любого из классов XML в Framework.

Подробнее см. В OpenXMLDeveloper.org.

0 голосов
/ 07 ноября 2008

Это решение, в котором я остановился. Я сохранил свой шаблон как файл xls, каждый раз, когда мне нужно создать лист, я копирую его в каталог и присваиваю ему имя. Затем я использую операторы OleDb и UPDATE, чтобы заполнить ячейки, в которые мне нужно добавить свои данные.

0 голосов
/ 06 ноября 2008

Вы можете использовать спецификацию Excel XML.

В моем блоге есть демонстрация того, как это сделать в C # 3.0, а также ссылка на пример на VB 9. Он использует LINQ to XML.

Концепция может быть легко изменена на .NET 2.0.

http://www.aaron -powell.com / блог / сентябрь-2008 / LINQ к XML-на-excel.aspx

0 голосов
/ 06 ноября 2008

Возможно, вы могли бы разбить операцию на две части.

  1. Сбор информации с веб-сайта.

Сохранить результаты в базе данных для дальнейшей работы.

  1. Обновление электронной таблицы Excel.

Запустите процесс, который обновляет электронные таблицы.

Это не будет работать, если веб-сайт должен возвращать результаты таблицы.

0 голосов
/ 06 ноября 2008

YES.

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

Вместо этого сохраните пользовательский ввод в реальную базу данных и генерируйте документ Excel только по мере необходимости. См. Вопрос, связанный ниже, для получения справки по созданию документа Excel: есть несколько вариантов, которые вообще не требуют взаимодействия, включая HTML-таблицы, XML, OpenXML CSV или сторонние компоненты, и большинство из них поддерживают форматирование, формулы и т. Д.
Создание файла Excel в ASP.NET

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

0 голосов
/ 06 ноября 2008

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

...