Можно ли загрузить файл Excel в память? - PullRequest
0 голосов
/ 25 июня 2010

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

Большинство магазинов продают более 100 вещей, и хотя у меня есть форма для вставки одного предмета, очень глупо иметьтолько для того, чтобы предприятия могли что-то предлагать.

Моя идея состоит в том, чтобы у компаний была возможность загрузить файл Excel и заставить мое приложение ASP.Net извлекать информацию из столбцов и заполнять классы, а затем с помощью Entity Framework 4 magicЯ сохраню эту информацию одним махом.

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

РЕДАКТИРОВАТЬ: До сих пор кажется, что для того, чтобы разобрать файлы XML, мне нужно установить Office.Я не уверен, что Winhost.com предлагает это.

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

Парсинг CSV был бы тривиальным, я полагаю, но я хочу сосредоточиться на опыте пользователей и не заставлять людей ругаться на моем сайте за то, что они заставляют их учиться.

РЕДАКТИРОВАТЬ 2: Полностью забыл упомянуть, что конечно Я предоставлю шаблон для их использования, было бы абсолютно глупо просто предположить, что они будут следовать макету таблицы.Так что не принимайте эту проблему во внимание.Я также знаю, что мне придется проверять каждый столбец, чтобы они не записывали «lolgei» в поле «Цена» или что-то в этом роде.

Ответы [ 8 ]

2 голосов
/ 25 июня 2010

Несколько быстрых мыслей ....

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

Запуск процесса автоматизации делопроизводства обычно является обременительным решением, добавляет Microsoftзависимость от офиса при развертывании вашего сервера, и лучше избегать ее, если это возможно, особенно если вы намерены запустить этот код в посте обратно.

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

Надеюсь, это поможет ..

Наслаждайтесь!

1 голос
/ 30 июля 2010

FWIW, я был очень впечатлен SpreadsheetGear в прошлом. Это не очень поможет с проверкой, которую вам придется сделать, но вы можете найти этот способ обращения с данными более простым.

1 голос
/ 25 июня 2010

Я сделал нечто подобное.Даг прав, автоматизация делопроизводства может быть немного хитрой, и в этом нет необходимости.Как насчет простых csv-файлов?Их легко загрузить, они могут быть проанализированы и могут быть легко проверены.

Возможно, секретарь обучен создавать лист Excel в правильном формате.Сохранение этого листа в виде CSV-файла является простой задачей (Файл-> Сохранить как-> csv).

0 голосов
/ 25 июня 2010

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

НЕ используйте автоматизацию для чтения файла Excel.Это не поддерживается, и однажды оно перестанет работать.Попросите пользователей загрузить файлы xlsx и использовать OpenXML SDK для извлечения данных.

0 голосов
/ 25 июня 2010

Я не понимаю, почему вы хотите заполнить объекты из файла Excel. Почему бы просто не создать процедуру, позволяющую клиенту загружать файл Excel, анализировать его и вставлять несколько элементов в существующую базу данных? Кажется, у вас уже есть архитектура. Ваш желаемый подход кажется слишком сложным.

Я уже делал такой импорт, но остерегайтесь того, что провайдер будет использовать соединения.

Помогите найти утечку в этом коде импорта Excel

Я закончил разбором CSV.

0 голосов
/ 25 июня 2010

Могу ли я представить косую мысль?Как насчет создания надстройки для листа Excel, которую вы можете распространять среди своих клиентов?Он может обрабатывать всю необходимую аутентификацию и т. Д., А также одним нажатием кнопки отправлять информацию на ваш сервер ASP.NET (или, еще лучше, в службу WCF, которую вы затем можете опубликовать и подписать).Конечно, на этом этапе вам не придется беспокоиться о переводе формата Excel в читаемый формат .NET - все это можно отформатировать по своему желанию из внешнего интерфейса надстройки, будь то объекты, сериализованные в XML, csv,что угодно.

Только мои $ 0,02 стоит ...

0 голосов
/ 25 июня 2010

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

0 голосов
/ 25 июня 2010

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

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