Экспорт Excel в веб-приложении
У меня есть приложение MVC. Я должен экспортировать данные в excel из приложения. Количество записей может доходить до лакхов. Когда мы нажимаем кнопку, мы получаем три варианта....
1. Открыть -> Когда я нажимаю кнопку Открыть, требуется много времени, чтобы открыть excel с данными.
Может ли кто-нибудь помочь в том, как этого можно достичь быстро?
Что я уже пробовал:
Я загружаю данные из базы данных в набор данных. Затем я перебираю набор данных и добавляю его на рабочий лист в объекте excel.
Richard MacCutchan
С таким объемом данных это всегда займет много времени.
Prakash Sekhar
Я знаю,но просто хочу максимально оптимизировать его. Есть ли другие способы подойти к этому?
Dave Kreskowiak
Если вы используете Excel Interop:
1) Вы не можете использовать его в веб-приложении. Он может прекрасно работать на вашем компьютере разработчика, но разверните его на рабочем веб-сервере, и ваш код в какой-то момент потерпит неудачу.
2) взаимодействие происходит медленно. Нет никакого способа обойти это, кроме как не использовать Interop. Используйте библиотеку, предназначенную для этой задачи, например OpenXML SDK или ClosedXML SDK.
Richard Deeming
Мы не можем сказать вам, как оптимизировать код, который мы не видим. Вам нужно либо показать нам соответствующие части вашего кода, либо объяснить, как вы экспортируете данные в Excel.
В общем, не используйте Interop и не просто отправляйте обратно HTML с помощью Content-Type
заголовок. Использовать безопасный сервер библиотеки, чтобы создать настоящий файл Excel, например:
* EPPlus[^];
* ClosedXML[^];
* SDK OpenXML[^];
Но, как сказал Дэйв, если это большой файл, вы ничего не сможете сделать, чтобы ускорить загрузку - если только не сможете убедить своих пользователей обновить скорость подключения к интернету!
Prakash Sekhar
Я не могу показать код. Я использую только закрытый XML-файл, 10 000 записей занимают 3 минуты. но это должно быть сделано максимум за 20-25 секунд. Есть ли для этого какой-то вариант?
Richard Deeming
Начните с профилирования всего, чтобы выяснить, где задержка - запрос базы данных; код, который создает электронную таблицу; сетевое соединение между сервером и клиентом; или клиентский компьютер, пытающийся открыть файл.
Если узким местом является база данных, проанализируйте и оптимизируйте свой запрос, а также добавьте все недостающие индексы. Если вы не можете заставить его работать достаточно быстро, вам может потребоваться обновить сервер.
Если это код, который создает электронную таблицу, то оптимизируйте его, чтобы сделать его быстрее. Если вы не можете сделать это достаточно быстро, то вам нужно либо показать нам соответствующие части кода, либо обновить свой сервер.
Если это сетевое соединение с сервера, то вам нужно будет обновить его до более быстрого соединения.
Если это сетевое соединение клиента, то ему нужно будет обновить свое соединение. Вы ничего не можете сделать, кроме как уменьшить количество возвращаемых данных.
Если это компьютер клиента изо всех сил пытается открыть файл, то ему нужно будет обновить свой компьютер. Вы ничего не можете сделать, кроме как уменьшить количество возвращаемых данных.