原文:使用C#或javascript将Table里的数据导出到Excel
Demo效果图:
用C#将Table数据导出Excel:
本方法已经将导出excel做成分部视图,引用时只需在视图中使用如下代码即可:
@{
Html.RenderAction("Index", "ExportExcel", new { divId = "report", filename = "hidTitle" });
}
其中divId为table外层紧连的div的Id,filename为导出的excel名字。本模块使用MVC,以下为Controller部分,其中Index对应所述分布视图。
public class ExportExcelController : Controller
{
[HttpPost]
[ValidateInput(false)]
public ActionResult DownloadReport(FormCollection form)
{
string excelContent = form["hidTable"];
string filename = form["hidFileName"];
ExportToExcel("application/ms-excel", filename + ".xls", excelContent);
return View();
}
public void ExportToExcel(string FileType, string FileName, string ExcelContent)
{
System.Web.HttpContext.Current.Response.Charset = "UTF-8";
System.Web.HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8).ToString());
System.Web.HttpContext.Current.Response.ContentType = FileType;
System.IO.StringWriter tw = new System.IO.StringWriter();
System.Web.HttpContext.Current.Response.Output.Write(ExcelContent.ToString());
System.Web.HttpContext.Current.Response.Flush();
System.Web.HttpContext.Current.Response.End();
}
public ActionResult Index(string divId, string filename)
{
ViewBag.HidDivId = divId;
ViewBag.FileName = filename;
return PartialView();
}
}
分布视图代码:
@{
Layout = null;
} <script type="text/javascript" src="~/Scripts/jquery-1.10.2.js"></script> <form action="/ExportExcel/DownloadReport" method="post" style="display:inline">
<input type="hidden" id="hidTable" name="hidTable" value="" />
<input type="hidden" id="hidFileName" name="hidFileName" value="" />
<input type="submit" name="btn" id="btnclick" class="btn blue" value="导出Excel文件" />
</form> <script>
$(function () {
$("#btnclick").click(function () {
$("#hidTable").val($("#@ViewBag.HidDivId").html());
$("#hidFileName").val($("#@ViewBag.FileName").val());
});
});
</script>
用javascript将Table数据导出Excel:
js文件地址:链接:http://pan.baidu.com/s/1jGwynWy 密码:kay1
使用方法:
<a download="@(ViewBag.ExcelName).xls" href="#" onclick="return ExcellentExport.excel(this, 'excelTable', 'Sheet1');">导出Excel文件</a>
其中excelTable对应table的Id值。
Demo使用源码
@{
Layout = null;
ViewBag.Title = "ExcelDemo";
}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>@ViewBag.Title</title>
<style>
* {
margin: ;
padding: ;
}
.Data {
width: %;
height: 50px;
background-color: #00ffff;
text-align: center;
font-size: 20px;
color: red;
line-height: 50px;
font-weight: bold;
}
#report {
width: %;
margin:10px %;
}
.tablereport1 tr:nth-child(2n+) {
background: #e4e4e4;
}
.tablereport1 td {
border: none !important;
padding: 0px 10px;
height: 40px;
text-align: center;
}
.Down {
margin: 10px 5px;
line-height: 30px;
}
.Down a {
border: 1px solid #a4a4a4;
background-color: #e5e5e5;
color: #;
font-size: 14px;
text-decoration: none;
border-radius: 2px;
}
</style>
<script src="~/Scripts/Excel/excellentexport.js"></script>
</head>
<body>
<div class="Data">
数据源
</div>
<input type="hidden" name="hidTitle" id="hidTitle" value="@ViewBag.ExcelName" />
<div id="report">
<table border="" class="tablereport1" cellpadding="" cellspacing="" id="excelTable">
<tr>
<td colspan="" style="text-align:center;font-size:20px">
测试数据表
</td>
</tr>
@for (int i = ; i < ; i++)
{
<tr>
@for (int j = ; j < ; j++)
{
<td>行@(i)列@(j)</td>
}
</tr>
}
</table>
</div>
<div class="Data">
数据导出
</div>
<div class="Down">
用C#将Table里的数据导出到Excel:<br />
@{
Html.RenderAction("Index", "ExportExcel", new { divId = "report", filename = "hidTitle" });
}
</div>
<div class="Down">
用js将Table里的数据导出到Excel:<br />
<a download="@(ViewBag.ExcelName).xls" href="#" onclick="return ExcellentExport.excel(this, 'excelTable', 'Sheet1');">导出Excel文件</a>
</div>
</body>
</html>