private HttpContext Context = HttpContext.Current;
//数据导出
public string ExportData()
{
Context.Response.ContentType = "application/vnd.ms-excel";
Context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
Context.Response.Charset = "UTF-8";
string fileName = "成绩明细表.xls";//导出的excel文档名称
if (Context.Request.ServerVariables["http_user_agent"].ToString().IndexOf("Firefox") != -1){
Context.Response.AppendHeader("Content-Disposition",
"attachment;filename=" + fileName);
}else
{
Context.Response.AppendHeader("Content-Disposition",
"attachment;filename=" + Context.Server.UrlEncode(fileName));
}
#region 产生DataGrid,并让浏览器当做EXCEL下载或者打开
System.IO.StringWriter strWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);
DataGrid dgExport = new DataGrid();
dgExport.DataSource = ds.Tables[0];//ds数据源
dgExport.AllowPaging = false;
dgExport.ItemStyle.Wrap = true;
dgExport.HeaderStyle.Wrap = true;
dgExport.AutoGenerateColumns = false;
this.AddDataBindColumns(dgExport);//exccel文档表头绑定
dgExport.ItemDataBound += new
DataGridItemEventHandler(dgExport_ItemDataBound);//excel单元格数据处理
dgExport.DataBind();
dgExport.RenderControl(htmlWriter);
Context.Response.Clear();
Context.Response.Write("<meta http-equiv=\"content-type\" content=\"application/ms-excel; charset=UTF-8\"/>" + strWriter.ToString());
Context.Response.End();
}
private void AddDataBindColumns(DataGrid dgExport)
{
dgExport.Columns.Add(new BoundColumn() { DataField = "name", HeaderText = "学号" });
dgExport.Columns.Add(new BoundColumn() { DataField = "id", HeaderText = "身份证号" });
dgExport.Columns.Add(new BoundColumn() { DataField = "grade", HeaderText = "成绩" });
foreach (BoundColumn column in dgExport.Columns)
{
column.ItemStyle.HorizontalAlign = HorizontalAlign.Center;
column.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
column.HeaderStyle.Width = 200;
}
}
//格式化单元格
void dgExport_ItemDataBound(object sender, DataGridItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
DataRowView drv = (DataRowView)e.Item.DataItem;
e.Item.Cells[0].Text = "=\"" + drv["id"].ToString() + "\"";//对单元格数据进行单独处理
}
}
/页面处理/
<span>
<iframe id="frmExport" style="display: none"></iframe>
<a href="#" onclick="ExportData()">导出</a>
</span>
/js处理/
$("#frmExport").attr("src", “后台访问路径”);