将 GridView 导出到 Excel 文件中

代码如下:

<%@ Page Language="C#" EnableEventValidation="false" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
  ICollection CreateDataSource( )
  {
    System.Data.DataTable dt 
= new System.Data.DataTable();
    System.Data.DataRow dr;
    dt.Columns.Add(
new System.Data.DataColumn("id"typeof(Int32)));
    dt.Columns.Add(
new System.Data.DataColumn("PkID"typeof(string)));
    dt.Columns.Add(
new System.Data.DataColumn("Title"typeof(string)));
    
for (int i = 0; i < 6; i++)
    {
      dr 
= dt.NewRow();
      dr[
0= i;
      dr[
1= "123456789123456789123456789";
      dr[
2= "11111111111111111111111122222";
      dt.Rows.Add(dr);
    }
    System.Data.DataView dv 
= new System.Data.DataView(dt);
    
return dv;
  }

  
protected void Page_Load( object sender, EventArgs e )
  {
    
if (!IsPostBack)
    {
      GridView1.BorderWidth 
= Unit.Pixel(2);
      GridView1.BorderColor 
= System.Drawing.Color.DarkOrange;
      GridView1.DataSource 
= CreateDataSource();
      GridView1.DataBind();
    }
  }

  
protected void Button1_Click( object sender, System.EventArgs e )
  {
    Response.Clear();
    Response.Buffer 
= true;
    Response.Charset 
= "GB2312";
    Response.AppendHeader(
"Content-Disposition""attachment;filename=FileName.xls");
    
// 如果设置为 GetEncoding("GB2312");导出的文件将会出现乱码!!!
    Response.ContentEncoding = System.Text.Encoding.UTF7;
    Response.ContentType 
= "application/ms-excel";//设置输出文件类型为excel文件。 
    System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter oHtmlTextWriter 
= new System.Web.UI.HtmlTextWriter(oStringWriter);
    
this.GridView1.RenderControl(oHtmlTextWriter);
    Response.Output.Write(oStringWriter.ToString());
    Response.Flush();
    Response.End();

  }
  
public override void VerifyRenderingInServerForm( Control control )
  { }
  
protected void GridView1_RowDataBound( object sender, GridViewRowEventArgs e )
  {
    
if (e.Row.RowType == DataControlRowType.DataRow)
    {
      e.Row.Cells[
1].Attributes.Add("style""vnd.ms-excel.numberformat:@;");
    }
  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
  
<title>将 GridView 导出到 Excel 文件中</title>
</head>
<body>
  
<form id="form1" runat="server">
    
<asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound"
      AutoGenerateColumns
="false">
      
<Columns>
        
<asp:BoundField HeaderText="序号" DataField="id" />
        
<asp:BoundField HeaderText="身份证号" DataField="PkID" />
        
<asp:BoundField HeaderText="网址" DataField="Title" ReadOnly="true" HtmlEncode="false" />
      
</Columns>
    
</asp:GridView>
    
<asp:Literal ID="HiddenOut" runat="server" />
    
<asp:Button ID="Button1" runat="server" Text="导出" OnClick="Button1_Click" />
  
</form>
</body>
</html>

截图:
完整代码下载: gridview导出Excel
posted on 2007-05-20 20:39  Travelling  阅读(367)  评论(0编辑  收藏  举报