2015-11-16 4 views
1

Мне нужно экспортировать данные в Grid.MVC в Excel. Я использовал решение в этой ссылке.Экспорт данных Grid.MVC в Excel

http://www.codeproject.com/Articles/325103/MVC-Grid-to-Excel-file-download?msg=5161340#xx5161340xx

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

Если это нехорошее решение, пожалуйста, предоставьте мне пример для экспорта данных Grid.MVC в excel.

+0

Для "файл не может быть прочитан" это немного догадка, но из примера я заметил, '' 'curContext.Response.AddHeader ("Content-Disposition"," attachment; filename = "+ имя_файла);' '' и помнить о некоторых проблемах с Firefox, которые бы вырезали имя файла, если у него были пробелы и, следовательно, путают браузер. Вы обязательно должны помещать имя файла в кавычки следующим образом: '' 'curContext.Response.AddHeader (« Content-Disposition », string.Format (« attachment; filename = \ »{0} \" ", fileName)); '' ' –

ответ

0

У меня есть решение javascript/jquery, которое работает для меня.

Когда вы используете grid.mvc, он добавляет некоторые классы в thead и tbody, эти классы необходимо удалить для правильного экспорта/визуализации в ваш сгенерированный файл excel. Я тоже использую grid.mvc, и этот код экспортируется в excel, пожалуйста, дайте мне знать, работает ли это для вас.

<script> 
 

 
    $("#btnExport").click(function (e) { 
 
     $('.grid-wrap').find('table').removeAttr('class'); 
 
     $('.grid-header').removeAttr('class'); 
 
     $('.grid-row').removeAttr('class'); 
 

 
     $('.grid-cell').removeAttr('data-name'); 
 
     $('.grid-cell').removeAttr('class'); 
 

 

 
     window.open('data:application/vnd.ms-excel,' + $('.grid-wrap').html()); 
 

 
     
 
     //MakeAnyFunctionToReloadThePageToGetTheClassesAgain(); 
 
     e.preventDefault(); 
 
    }); 
 

 
</script>
@Html.Grid(Model).Columns(columns => 
 
{ 
 
    
 
    columns.Add(foo => foo.Date).Sortable(true).Filterable(true); 
 
    columns.Add(foo => foo.User).Sortable(true).Filterable(true); 
 
    columns.Add(foo => foo.Controller).Sortable(true).Filterable(true); 
 
    columns.Add(foo => foo.Action).Sortable(true).Filterable(true); 
 
    columns.Add(foo => foo.ActionType).Sortable(true).Filterable(true); 
 
    columns.Add(foo => foo.JsonObject).Sortable(true).Filterable(true); 
 
}).WithMultipleFilters() 
 

 
<button type="button" class="btn btn-danger" id="btnExport">export csv</button>

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