导出html表excel在asp.net MVC2
本文关键字:asp net MVC2 excel html 导出 | 更新日期: 2023-09-27 17:49:28
我正在寻找如何在ASP中导出excel的最佳方式。净MVC
现在我从billsternberger.net得到了这个
从ASP导出到Excel或CSV。. NET MVC + c#
//Export to excel
public ActionResult Download()
{
List<Lookup> lookupList = data,GetLookupList();
var grid = new System.Web.UI.WebControls.GridView();
grid.DataSource = lookupList;
grid.DataBind();
Response.ClearContent();
Response.AddHeader("content-disposition", "attachment; filename=YourFileName.xlsx");
Response.ContentType = "application/vnd.ms-excel";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
grid.RenderControl(htw);
Response.Write(sw.ToString());
Response.End();
return View();
}
从绑定到datagrid并导出到excel。
现在我需要做的是得到我的html表,并将其导出到excel,我使用jquery数据表操作表数据,所以它会更轻的重量,因为它是在客户端完成。
我尝试使用jquery和ajax,我通过我的html表到我的实体在我的控制器
function Export()
{
var details = {};
details.LookupName = $("#tblLookup").html();
//Validate details
var url_ = generateURL("/Home/Download"); //Call Save Controller and pass details entities
$.ajax({
type: "POST",
url: url_,
data: details, //details will act as the Entities Model
traditional: true,
success: function(data) {
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert("error: " + XMLHttpRequest.responseText);
},
dataType: 'json'
});
};
但是它把我扔给了A potentially dangerous Request.Form value was detected from the client
等…
如何在MVC上完成?我已经寻找了一些类似的主题,但它总是让我回到我的第一个工作样本。
Thanks in Regards
最简单的解决方案是将HTML表导出为CSV文件并发送到服务器。让我们举个例子。假设我们已经定义了一个视图模型:
public class ExportViewModel
{
[AllowHtml]
public string Csv { get; set; }
}
和控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
return View(new ExportViewModel());
}
[HttpPost]
public ActionResult Export(ExportViewModel model)
{
var cd = new ContentDisposition
{
FileName = "YourFileName.csv",
Inline = false
};
Response.AddHeader("Content-Disposition", cd.ToString());
return Content(model.Csv, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
}
}
现在,在相应的视图中,我们假设我们已经生成了一些<table>
(这个表的生成方式在这里并不有趣):
@model ExportViewModel
<table id="myTable">
<thead>
<tr>
<th>Id</th>
<th>Name</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Foo</td>
</tr>
<tr>
<td>2</td>
<td>Bar</td>
</tr>
</tbody>
</table>
@using (Html.BeginForm("Export", null, FormMethod.Post, new { id = "export" }))
{
@Html.HiddenFor(x => x.Csv)
<button type="submit">Export to Excel</button>
}
<script type="text/javascript" src="http://www.kunalbabre.com/projects/table2CSV.js"></script>
<script type="text/javascript">
$('#export').submit(function () {
$('#Csv').val($('#myTable').table2CSV({ delivery: 'value' }));
});
</script>
我们正在使用table2CSV jQuery plugin
将HTML表转换为CSV格式。在将表单提交给服务器之前,生成的CSV将存储在一个隐藏字段中。
如果您想构建原生XLSX文件,则必须在服务器上使用OpenXML SDK。你不能把一个HTML表格转换成一个原生的Excel文件。这种解决方案实施起来比较困难,因为你只需要将数据发送到服务器,但它允许你对生成的Excel文件进行更大的定制。