gridview數據
單擊“導出EXCEL”按鈕后
1.在上面的代碼中,先將gridview綁定到指定的數據源中,然后在button按鈕(用來做導出到EXCEL的)的事件中,寫入相關的代碼。
2.使用Response.AddHeader("content-disposition","attachment;filename= exporttoexcel.xls");中的filename來指定將要導出的excel的文件名,
3.這里是exporttoexcel.xls。要注意的是,由於gridview的內容可能是分頁顯示的,因此,這里在每次導出excel時,先將gridview的allowpaging屬性設置為 false,
4. 然后通過頁面流的方式導出當前頁的gridview到excel中,最后再重新設置其allowpaging屬性。另外要注意的是,要寫一個空的VerifyRenderingInServerForm方法(必須寫),
///
<summary>
/// 導EXCEL
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnExcel_Click( object sender, EventArgs e)
{
Response.Clear();
Response.AddHeader( " content-disposition ", " attachment;filename=FileName.xls ");
Response.Charset = " gb2312 ";
Response.ContentType = " application/vnd.xls ";
System.IO.StringWriter stringWrite = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
gvValueList.AllowPaging = false;
fun.GvDataInit(sql.selEntryTable, gvValueList, ddlMonth.SelectedValue.Trim());//綁定GV
gvValueList.RenderControl(htmlWrite);
Response.Write(stringWrite.ToString());
Response.End();
gvValueList.AllowPaging = true;
fun.GvDataInit(sql.selEntryTable, gvValueList, ddlMonth.SelectedValue.Trim());//綁定GV
}
/// <summary>
/// 導出EXCEL,要寫一個空的VerifyRenderingInServerForm方法
/// </summary>
/// <param name="control"></param>
public override void VerifyRenderingInServerForm(Control control)
{
// Confirms that an HtmlForm control is rendered for
}
/// <summary>
/// 綁定GridView數據
/// </summary>
/// <param name="sqlID"></param>
/// <param name="gv"></param>
public void GvDataInit( string sqlID, GridView gv, string Condition1)
{
try
{
DataTable dt = null;
dt = BLL.SQLHandler.SearchData(sqlID, Condition1);
if (dt != null && dt.Rows.Count > 0)
{
gv.DataSource = dt;
}
else
{
gv.PageIndex = 0;
}
gv.DataBind();
}
catch (Exception ex)
{
gv.PageIndex = 0;
throw ex;
}
}
/// 導EXCEL
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnExcel_Click( object sender, EventArgs e)
{
Response.Clear();
Response.AddHeader( " content-disposition ", " attachment;filename=FileName.xls ");
Response.Charset = " gb2312 ";
Response.ContentType = " application/vnd.xls ";
System.IO.StringWriter stringWrite = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
gvValueList.AllowPaging = false;
fun.GvDataInit(sql.selEntryTable, gvValueList, ddlMonth.SelectedValue.Trim());//綁定GV
gvValueList.RenderControl(htmlWrite);
Response.Write(stringWrite.ToString());
Response.End();
gvValueList.AllowPaging = true;
fun.GvDataInit(sql.selEntryTable, gvValueList, ddlMonth.SelectedValue.Trim());//綁定GV
}
/// <summary>
/// 導出EXCEL,要寫一個空的VerifyRenderingInServerForm方法
/// </summary>
/// <param name="control"></param>
public override void VerifyRenderingInServerForm(Control control)
{
// Confirms that an HtmlForm control is rendered for
}
/// <summary>
/// 綁定GridView數據
/// </summary>
/// <param name="sqlID"></param>
/// <param name="gv"></param>
public void GvDataInit( string sqlID, GridView gv, string Condition1)
{
try
{
DataTable dt = null;
dt = BLL.SQLHandler.SearchData(sqlID, Condition1);
if (dt != null && dt.Rows.Count > 0)
{
gv.DataSource = dt;
}
else
{
gv.PageIndex = 0;
}
gv.DataBind();
}
catch (Exception ex)
{
gv.PageIndex = 0;
throw ex;
}
}
若報錯提示如下:
報RegisterForEventValidation can only be called during Render()錯誤 .
將
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AddEntrytable.aspx.cs" Inherits="AddEntrytable" %>
修改為
<%@ Page Language="C#" EnableEventValidation="false" AutoEventWireup="true" CodeFile="AddEntrytable.aspx.cs" Inherits="AddEntrytable" %>
方二:
protected void btnExcel_Click(object sender, EventArgs e) { gvValueList.AllowPaging = false; databind(); ToExcel(this.gvValueList, System.Web.HttpUtility.UrlEncode("test.xls", System.Text.Encoding.UTF8)); //Response.Clear(); //Response.AddHeader("content-disposition", "attachment;filename=FileName.xls"); //Response.Charset = "gb2312"; //Response.ContentType = "application/vnd.xls"; //System.IO.StringWriter stringWrite = new System.IO.StringWriter(); //System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite); //gvValueList.AllowPaging = false; //databind(); //gvValueList.RenderControl(htmlWrite); //Response.Write(stringWrite.ToString()); //Response.End(); //gvValueList.AllowPaging = true; //databind(); } private void ToExcel(Control ctl, string FileName) { HttpContext.Current.Response.Charset = "UTF-8"; HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8; HttpContext.Current.Response.ContentType = "application/ms-excel"; HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + "" + FileName); ctl.Page.EnableViewState = false; System.IO.StringWriter tw = new System.IO.StringWriter(); HtmlTextWriter hw = new HtmlTextWriter(tw); ctl.RenderControl(hw); HttpContext.Current.Response.Write(tw.ToString()); HttpContext.Current.Response.End(); } public override void VerifyRenderingInServerForm(Control control) { // Confirms that an HtmlForm control is rendered for }