2010-02-04 3 views
5

У меня есть HTML-таблица на странице просмотра ASP.NET MVC. Теперь мне нужно экспортировать эту таблицу в Excel.Экспорт таблицы HTML в Excel

(1) Я использовал частичный вид (Inquiries.ascx), чтобы отобразить данные таблицы из базы данных (с помощью LINQ к Entity) (2) Я также использовал UITableFilter плагин для фильтрации записей (например: http://gregweber.info/projects/demo/flavorzoom.html)

(3) В любой момент времени я должен фильтровать видимые записи в Excel.

Цените свои ответы.

Благодаря

Рита

Вот мой Вид:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Mvc.Master" Inherits="System.Web.Mvc.ViewPage" %> 


<asp:Content ID="Content2" ContentPlaceHolderID="cphHead" runat="server"> 
<script src="../../Scripts/jquery.tablesorter.js" type="text/javascript"></script> 
    <script src="../../Scripts/jquery.uitablefilter.js" type="text/javascript"></script> 

<script type="text/javascript"> 
//Load Partial View 
$('#MyInquiries').load('/Home/Inquiries'); 

// To Apply Filter Expression using uiTableFilter plugin 
      $("#searchName").keyup(function() { 
       $.uiTableFilter($("#tblRefRequests"), this.value); 
       $("#tblRefRequests").tablesorter({ widthFixed: true, widgets: ['zebra'] }); 
      }); 


//Export the HTML table contents to Excel 
     $('#export').click(function() { 
//Code goes here 

}); 
</script> 
</asp:Content> 

//Main Content 
<asp:Content ID="Content1" ContentPlaceHolderID="cphContent" runat="server"> 
<h2 class="pageName">View All Inquiries</h2> 
<input type="submit" value="Export to Excel" id="export" /> 
<div id='MyInquiries'></div> 
</asp:Content> 

Сильно типизированных Частичный вид пользовательского управления (Inquiries.ascx) для создания таблицы:

<table> 
    <tr><td valign ="middle">Filter Expression: <%= Html.TextBox("searchName")%></td></tr> 
    </table> 
    <table id="tblRefRequests" > 
    <thead> 
     <tr> 
      <th>Tx_ID</th> 
      <th>TX Date</th> 
      <th>Name</th> 
      <th>Email Address </th> 
      <th>Products</th> 
      <th>Document Name</th> 
     </tr> 
</thead> 

<tbody> 
    <% foreach (var item in Model) { %> 
     <tr> 
      <td visible =false><%= item.RequestID %></td> 
      <td><%= String.Format("{0:d}", item.RequestDate) %></td> 
      <td><%= item.CustomerName %></td> 
      <td><%= Html.Encode(item.Email) %></td> 
      <td><%= item.ProductName %></td> 
      <td><%= Html.Encode(item.DocDescription)%></td> 
     </tr> 
    <% } %> 
</tbody> 
    </table> 

Вот мой код контроллера для загрузки частичного просмотра запросов:

[HttpGet] 
     public PartialViewResult Inquiries() 
     { 
var model = from i in myEntity.Inquiries 
    where i.User_Id == 5 
         orderby i.TX_Id descending 
         select new { 
          RequestID = i.TX_Id, 
          CustomerName = i.CustomerMaster.FirstName, 
          RequestDate = i.RequestDate, 
          Email = i.CustomerMaster.MS_Id, 
          DocDescription = i.Document.Description, 
          ProductName = i.Product.Name 
         }; 
      return PartialView(model); 
     } 

ответ

5

Попробуйте плагин jQuery: table2csv. Используйте аргумент, delivery: 'value', чтобы вернуть csv как строку.

Вот реализация:

  1. Добавить очередную кнопку HTML ввода и .NET на скрытую страницу
  2. Добавить событие OnClick для этой кнопки под названием «Экспорт»
  3. Создать яваскрипт функции , Export, который сохраняет возвращаемое значение table2CSV() в скрытое поле и отправляет обратно.
  4. Сервер получает скрытое почтовые данные (CSV в виде строки)
  5. Сервер выводит строку в браузер в виде файла CSV

.

// javascript 
function Export() 
{  
    $('#yourHiddenFieldId').val() = $('#yourTable').table2CSV({delivery:'value'}); 
    __doPostBack('#yourExportBtnId', ''); 
} 

// c# 
if(Page.IsPostBack) 
{ 
    if(!String.IsNullOrEmpty(Request.Form[yourHiddenField.UniqueId])) 
    { 
     Response.Clear(); 
     Response.ContentType = "text/csv"; 
     Response.AddHeader("Content-Disposition", "attachment; filename=TheReport.csv"); 
     Response.Flush(); 
     Response.Write(Request.Form[yourHiddenField.UniqueID]); 
     Response.End(); 
    } 
} 
+0

Я пытался. Он появляется как строка в новом окне. Но я хочу это в файле Excel. – Rita

+0

Я добавил пример кода. Проверьте это. И я не знаю, как вы настроились на экспорт Excel. Это целый другой зверь. Я предлагаю экспортировать CSV. Это намного проще, быстрее и легче и элегантно экспортировать CSV-файл и файл Excel. Вы можете оплатить его как «CSV для Excel». Это то, чем я занимаюсь. –

+0

Похоже на работу. Попробуем сейчас обновить n в ближайшее время. – Rita

0

загрузить компоненты: НПМ установить стол к первенствует

https://github.com/ecofe/tabletoexcel

var tableToExcel=new TableToExcel(); 
 
document.getElementById('button1').onclick=function(){ 
 

 
    tableToExcel.render("table"); 
 

 
}; 
 
document.getElementById('button2').onclick=function(){ 
 
    var arr=[ 
 
     ['LastName','Sales','Country','Quarter'], 
 
     ['Smith','23','UK','Qtr 3'], 
 
     ['Johnson','14808','USA','Qtr 4'] 
 
    ] 
 
    tableToExcel.render(arr,[{text:"create",bg:"#000",color:"#fff"},{text:"createcreate",bg:"#ddd",color:"#fff"}]); 
 
};

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