2009-07-30 2 views
2

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

void ExportToExcel3() 
{ 
    Response.Clear(); 
    Response.AddHeader("content-disposition", "attachment;filename=FileName.xls"); 

    Response.Charset = ""; 
    Response.ContentType = "application/vnd.xls"; 
    System.IO.StringWriter stringWrite = new System.IO.StringWriter(); 
    System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite); 
    GridView2.RenderControl(htmlWrite); 
    Response.Write(stringWrite.ToString()); 
    Response.End(); 
} 

ответ

4

При взгляде на производительность вашего решения, важно понимать, что вы на самом деле не экспортировать DataGrid в Excel: вы на самом деле писать его содержимое в виде HTML, а затем «обманывая» Окна в открытие этого HTML с помощью Excel. Excel затем преобразует таблицу HTML в рабочий лист, а также может.

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

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

Существует несколько библиотек .NET, которые могут вам помочь, как commercial, так и free. Похоже, что поисковая система Google найдет множество других альтернатив. Пожалуйста, обратите внимание, что ваш серверный код станет значительно более активным: вам нужно будет настроить структуру/форматирование электронной таблицы и выполнить цикл DataGrid для экспорта каждой строки. Но конечный результат, файл XLS, будет более компактным и эффективным для него, а также будет более полезным (то есть редактируемым) для ваших пользователей, чем ваш текущий экспорт HTML.

Смежные вопросы