在以下按鈕單擊事件中實作:
private void btnMIME_Click(object sender, System.EventArgs e)
{
dgShow.AllowPaging = false;
BindData();
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("Content-Disposition", "inline;filename="
+ HttpUtility.UrlEncode("下載下傳檔案.xls",Encoding.UTF8 ) );
//如果輸出為Word,修改為以下代碼
//Response.ContentType = "application/ms-word"
//Response.AddHeader("Content-Disposition", "inline;filename=test.doc")
StringBuilder sb=new StringBuilder();
System.IO.StringWriter sw = new System.IO.StringWriter(sb);
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(sw);
sb.Append("<html><body>");
dgShow.RenderControl(hw);
sb.Append("</body></html>");
Response.Write(sb.ToString());
Response.End();
dgShow.AllowPaging = true;
BindData();
}
注:1.若DataGrid中有按鈕列,則在導出前應先将其隐藏.
2.若DataGrid有分頁,而又要列印所有資料的話就應先取消分頁.
2006年7月19日-補充:
若為VS.NET2005中的資料綁定新控件GridView,以上代碼會提示異常錯誤,經網上搜尋,解決方案如下:
1、在導出界面中重載
public override void VerifyRenderingInServerForm(Control control)
{
//base.VerifyRenderingInServerForm(control);
}
2、在web.config中修改<pages enableEventValidation ="false" ></pages>
或
<%@ Page Language="C#" EnableEventValidation = "false" AutoEventWireup="true"
CodeFile="ExportGridView.aspx.cs" Inherits="ExportGridView" %>