protected void lbExport_Click(object sender, EventArgs e)
        {
            Response.Clear();
            Response.Buffer = true;
            Response.ContentType = "application/vnd.ms-excel";
            Response.Charset = "utf-8";
            this.EnableViewState = false;
            StringWriter sw = new StringWriter();
            HtmlTextWriter htw = new HtmlTextWriter(sw);
            DataGrid dg = new DataGrid();
            dg.DataSource = exportData;
            dg.DataBind();
            dg.RenderControl(htw);
            Response.Write(sw.ToString());
            Response.End();
        }

解决方案 »

  1.   

    cs里面的代码
    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;public partial class _Default : System.Web.UI.Page 
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Data_Load();
        }
        private void Data_Load()
        {
            string strconn = "server=.;database=pubs;uid=sa;pwd=";
            SqlConnection conn = new SqlConnection(strconn);
            conn.Open();
            SqlDataAdapter da = new SqlDataAdapter("select * from Student",conn);
            DataSet ds = new DataSet();
            da.Fill(ds);
            conn.Close();
            this.DataList1.DataSource = ds.Tables[0].DefaultView;
            this.DataList1.DataBind();
        }
        /// <summary>
        /// 输出到Excel 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button1_Click(object sender, EventArgs e)
        {
            if (TextBox1.Text == "")
            {
                Response.Write("<SCRIPT language=javascript>");
                Response.Write("window.alert(''请输入文件名'');");
                Response.Write("</SCRIPT>");
            }
            else
            {
                Response.Clear();
                Response.Buffer=true;
                Response.Charset = "GB2312";
                Response.AppendHeader("Content-Disposition", "attachment;filename=" + TextBox1.Text + ".xls");
                Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
                Response.ContentType = "application/ms-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);
                this.DataList1.RenderControl(oHtmlTextWriter);
                Response.Write(oStringWriter.ToString());         }
        }
        override protected void OnInit(EventArgs e)
        {
            // 
            // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。 
            // 
            InitializeComponent();
            base.OnInit(e);
        }    private void InitializeComponent()
        {
            this.DataList1.ItemDataBound += new System.Web.UI.WebControls.DataListItemEventHandler(this.DataList1_ItemDataBound);// DataGridItemEventHandler(this.DataList1_ItemDataBound);
            this.Button1.Click += new System.EventHandler(this.Button1_Click);
            this.Load += new System.EventHandler(this.Page_Load);    }
        protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                //e.Item.Cells[0].Attributes.Add("style", "vnd.ms-excel.numberformat:@");
                //e.Item.Cells[3].Attributes.Add("style", "vnd.ms-excel.numberformat:¥#,###.00");
            } 
        }
    源里面的代码
    <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            &nbsp;<asp:Label ID="Label1" runat="server" Text="文件名:"></asp:Label>
            <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="输出到Excel" />
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            <asp:DataList ID="DataList1" runat="server" OnItemDataBound="DataList1_ItemDataBound">
                <ItemTemplate>
                    <table>
                        <tr>
                            <td style="width: 100px">
                            <%#DataBinder.Eval(Container.DataItem,"id") %>
                            </td>
                            <td style="width: 100px">
                            <%#DataBinder.Eval(Container.DataItem,"name") %>
                            </td>
                            <td style="width: 100px">
                            <%#DataBinder.Eval(Container.DataItem,"old") %>
                            </td>
                            <td style="width: 100px">
                            <%#DataBinder.Eval(Container.DataItem,"class") %>
                            </td>
                        </tr>
                    </table>
                </ItemTemplate>
            </asp:DataList></div>
        </form>
    </body>
    </html>