ITPub博客

首页 > 应用开发 > IT综合 > Asp.net中使用以下代码导出Excel表格(转)

Asp.net中使用以下代码导出Excel表格(转)

原创 IT综合 作者:heying1229 时间:2007-07-17 19:49:01 0 删除 编辑
private void ExportExcelFromDataGrid
(
string filename , System.Web.UI.WebControls.DataGrid ToExcelGrid )
{
Response.Clear();
Response.Buffer
= true;
Response.Charset
="utf-8";
Response.AppendHeader (
"Content-Disposition","attachment;filename="+Server.UrlEncode ( filename ) );
Response.ContentEncoding
=System.Text.Encoding.Default;//设置输出流为简体中文
Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。
this.EnableViewState = false;
System.Globalization.CultureInfo myCItrad
= new System.Globalization.CultureInfo("ZH-CN",true);
System.IO.StringWriter oStringWriter
= new System.IO.StringWriter(myCItrad);
System.Web.UI.HtmlTextWriter oHtmlTextWriter
=
new System.Web.UI.HtmlTextWriter(oStringWriter);
ToExcelGrid.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
Response.End();
}


private void Button4_Click(object sender, System.EventArgs e)
{
this.Panel1.Visible = false;
string filename = "内训师.xls";
this.DataGrid1.Columns[6].Visible = true;
this.DataGrid1.Columns[7].Visible = true;
this.DataGrid1.Columns[this.DataGrid1.Columns.Count-1].Visible = false; // *
this.DataGrid1.Columns[this.DataGrid1.Columns.Count-2].Visible = false;
// *
this.DataGrid1.AllowSorting = false; // *
this.DataGrid1.AllowPaging = false;
this.DataGrid1.SelectedIndex = -1; // *
this.BindGrid();
this.ExportExcelFromDataGrid ( filename , this.DataGrid1 );
}

}

原理是利用DataGrid(其实是其父类Control)的RenderControl方法输出,整个DataGrid的外观时,将这些HTML代码写入到缓冲区,同时设置一下 ContentType ,让Excel自己的自动纠错功能将这个输出存为一个Excel文件。

很多网上的朋友使用了以上这种可粘贴性强的代码,发现不好用,反映的错误类似:
“LinkButton必须放在一个具有runat=server的标签的Form”之类的话,而更多的网友说:
问题很明显,因为DataGrid没有放在runat=server 的Form里面,加上就可以了。[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10172717/viewspace-926874/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    1688
  • 访问量
    9438673