2010-02-04 29 views
5

ASP.NET MVC Görünümü sayfasında HTML tablosu var. Şimdi bu tabloyu Excel'e vermek zorundayım.HTML Tablosunu Excel'e Aktar

(1) I (idareye Entities kullanılarak) veritabanından tablo verileri görüntülemek için kısmi görünümü (Inquiries.ascx) kullandık (2) kayıt (Örn: http://gregweber.info/projects/demo/flavorzoom.html) filtre etmek de kullanmıştır UITableFilter eklentisi

(3) Herhangi bir noktada, görünür kayıtları Excel'e filtrelemem gerekiyor.

Yanıtlarınızı takdir edin.

tablo

Kesinlikle Yazılan Kısmi görünümü kullanıcı kontrolü (Inquiries.ascx) oluşturmaya yönelik

<%@ 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> 
: Burada

<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> 

İşte

Teşekkür

Rita

benim View var Sorgulama kısmi görünümünü yüklemek için Denetleyici kodum:

[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); 
     } 

cevap

5

jQuery eklentisini deneyin: table2csv. Csv'yi bir dize olarak döndürmek için argüman, delivery: 'value' değerini kullanın.

  1. "İhracat"
  2. denilen o düğmeye onclick Etkinlik ekle sayfa
  3. düzenli html giriş düğmesi ve bir .NET HiddenField ekle bir javascript fonksiyonu oluşturun: Burada

    bir uygulamasıdır , Export, tablo2CSV() dönüş değerini gizli alana kaydeder ve geri gönderir.
  4. sunucu HiddenField sonrası verileri (bir karakter dizisi CSV)
  5. sunucu CSV dosyası

olarak tarayıcıya dizgisi verir alır.

// 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

yükleyin. Yeni bir pencerede bir dize olarak geliyor. Ama bunu Excel Dosyasında istiyorum. – Rita

+0

Örnek kod ekledim. Buna bir bak. Ve Excel'i nasıl dışa aktardığınızı bilmiyorum. Bu tam bir canavar. CSV'yi dışa aktarmayı öneriyorum. Bir CSV dosyasını bir Excel dosyasına aktarmak çok daha kolay, daha hızlı ve daha hafif ve zarif. "Excel için CSV" olarak faturalayabilirsiniz. İşte bu yaptığım şey. –

+0

İşe yarayacak gibi görünüyor. Şimdi hemen deneyeceğim n güncelleyin. – Rita

0

indir bileşenleri: npm denedim Masa ile excel

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"}]); 
 
};

İlgili konular