У меня есть HTML-таблица на странице ASP.NET MVC View. Теперь я должен экспортировать эту таблицу в Excel.
(1) Я использовал частичное представление (Inquiries.ascx) для отображения данных таблицы из базы данных (использующий LINQ для Объекта) (2), я также использовал плагин UITableFilter для фильтрации записей (Исключая: http://gregweber.info/projects/demo/flavorzoom.html)
(3) В любом моменте времени я должен отфильтровать видимые записи на Excel.
Цените свои ответы.
Спасибо
Rita
Вот мое Представление:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Mvc.Master" Inherits="System.Web.Mvc.ViewPage" %>
//Main Content
View All Inquiries
Пользовательский элемент управления представления Partial Со строгим контролем типов (Inquiries.ascx) для генерации таблицы:
Filter Expression: <%= Html.TextBox("searchName")%>
Tx_ID
TX Date
Name
Email Address
Products
Document Name
<% foreach (var item in Model) { %>
<%= item.RequestID %>
<%= String.Format("{0:d}", item.RequestDate) %>
<%= item.CustomerName %>
<%= Html.Encode(item.Email) %>
<%= item.ProductName %>
<%= Html.Encode(item.DocDescription)%>
<% } %>
Вот мой код Контроллера для загрузки Запросов частичное представление:
[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);
}
Попробуйте плагин jQuery: table2csv . Используйте аргумент delivery: 'value', чтобы вернуть 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();
}
}