MVC前台table导出excel
来源:互联网 发布:centos smplayer 编辑:程序博客网 时间:2024/06/05 16:58
前台table View接收table的内容
@model System.Data.DataTable
@using (Html.BeginForm("DownloadExcel", "CPK", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<table>
<tr>
<td>
自己表格内容
</td>
</tr>
</table>
<p >
<input type="submit" value="Download" id="btDownload" iconcls="icon-print" style="width:100px;height:40px; background:#0094ff;font-weight:bold" />
</p>
}
<div>
@Html.ActionLink("Back to SearchView", "Search")
</div>
后台controller //自己新建的表格内容
public actionresult table{
DataTable dt = new DataTable("Data");
DataRow dr = dt.NewRow();
dr[colSN] = sn;dr[name]="huang";
dt.Rows.Add(dr);
Session["DataTable"] = dt;//先把自己的表格内容放到一个虚拟内存中
return view(dt);
}
点击Download按钮执行Controller方法
[HttpPost]
public ActionResult DownloadExcel()
{
DataTable dt = (DataTable)Session["DataTable"];
GridView gv = new GridView();
gv.DataSource = dt; gv.DataBind();
ExcelOut(gv);
return View();
}
public void ExcelOut(GridView gv)//改方法执行后直接下载,不可再返回页面
{
if (gv.Rows.Count > 0)
{
System.Text.Encoding big5 = System.Text.Encoding.GetEncoding("big5");
Response.Clear();
Response.ClearContent();
Response.Charset = "big5";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("big5");
Response.AddHeader("Content-Disposition", "attachment; filename=Detail" + DateTime.Now.ToString("_yyyyMMdd") + ".xls");
Response.ContentEncoding = big5;
Response.ContentType = "application/ms-excel";
System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN", true);
StringWriter sw = new StringWriter(myCItrad);
HtmlTextWriter htw = new HtmlTextWriter(sw);
gv.RenderControl(htw);
Response.Write("<meta http-equiv=Content-Type content=\"text/html; charset=big5\">");
Response.Write(sw.ToString());
Response.Flush();
Response.End();
}
else
{
Response.Write("No data");
}
}