Response.Clear();
Response.AddHeader("Content-Disposition", "attachment;filename=report.xls"); 
Response.ContentType = "application/vnd.ms-excel"; 
Response.ContentEncoding=System.Text.Encoding.GetEncoding("Big5");
this.EnableViewState= false; 
System.IO.StringWriter tw = new System.IO.StringWriter(); 
HtmlTextWriter hw = new HtmlTextWriter(tw);           this.DataGrid1.RenderControl(hw);
                           Response.End();因Response是內制對像,我就知道怎麼去封裝它了,我現在很多個頁面都要用,所以我想封裝起來直接調用這樣寫代碼的時候快一點,還請高手幫忙!

解决方案 »

  1.   

    public void ExportToExcel(Control ctl, string fileName, string encoding)
            {
                HttpContext context = HttpContext.Current;
                HttpResponse response = context.Response;
                response.Clear();
                response.Buffer = true;
                response.Charset = encoding;
                response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName) + ".xls");
                response.ContentEncoding = Encoding.GetEncoding(encoding);
                response.ContentType = "application/ms-excel";
                if (ctl.Page != null)
                {
                    ctl.Page.EnableViewState = false;
                    StringWriter sw = new StringWriter();
                    HtmlTextWriter htw = new HtmlTextWriter(sw);
                    this.ClearControls(ctl);
                    ctl.RenderControl(htw);
                    response.Write(sw.ToString());
                    response.End();
                    ctl.Page.EnableViewState = true;
                }
                else
                {
                    StringWriter sw = new StringWriter();
                    HtmlTextWriter htw = new HtmlTextWriter(sw);
                    ctl.RenderControl(htw);
                    response.Write(sw.ToString());
                    response.End();
                }        }        public void ExportToExcel(Control ctl, string fileName)
            {
                //this.ExportToExcel( ctl,fileName,"utf-8");
                this.ExportToExcel(ctl, fileName, "gb2312");
            }
            public void ExportToExcel(DataTable dt, string fileName)
            {
                DataGrid dg = new DataGrid();
                dg.DataSource = dt.DefaultView;
                dg.AllowPaging = false;
                dg.DataBind();
                this.ExportToExcel(dg, fileName);
            }
            public void ExportToExcel(DataSet ds, string fileName, string tableName)
            {
                DataTable dt = null;
                if (tableName == "")
                    dt = ds.Tables[0];
                else
                    dt = ds.Tables[tableName];
                this.ExportToExcel(dt, fileName);
            }        public void ExportToExcel(DataSet ds, string fileName)
            {
                this.ExportToExcel(ds, fileName, "");
            }
      

  2.   

    我用以下的代碼導出的Excel表格怎麼會是(在Excel表隻看到System.Web.UI.HtmlTextWriter)
    還請高手再幫我看看是怎麼回事,謝謝!
    public void ExportToExcel(DataGrid dg,string FileName,string Encoding ,string OpenMode)
    {
    HttpContext context = HttpContext.Current;
    HttpResponse response =context.Response;
    response.Clear();
    response.Buffer = true;
    response.Charset = Encoding;
    response.AddHeader("Content-Disposition", OpenMode+";filename="+FileName); 
    response.ContentType = "application/vnd.ms-excel"; 
    response.ContentEncoding=System.Text.Encoding.GetEncoding(Encoding);
    dg.Page.EnableViewState= false; 
    System.IO.StringWriter tw = new System.IO.StringWriter(); 
    HtmlTextWriter hw = new HtmlTextWriter(tw);
    dg.RenderControl(hw);
    response.Write(hw);
    response.End();
    dg.Page.EnableViewState=true;
    }
      

  3.   

    response.Write(hw);-->response.Write(tw.ToString());//我先前给的答复少了这个函数
    private void ClearControls(Control control)
    {
    for (int i=control.Controls.Count -1; i>=0; i--)
    {
    ClearControls(control.Controls[i]);
    } if (!(control is TableCell))
    {
    if (control.GetType().GetProperty("SelectedItem") != null)
    {
    LiteralControl literal = new LiteralControl();
    control.Parent.Controls.Add(literal);
    try
    {
    literal.Text = (string)control.GetType().GetProperty("SelectedItem").GetValue(control,null);
    }
    catch
    {
    }
    control.Parent.Controls.Remove(control);
    }
    else
    if (control.GetType().GetProperty("Text") != null)
    {
    LiteralControl literal = new LiteralControl();
    control.Parent.Controls.Add(literal);
    literal.Text = (string)control.GetType().GetProperty("Text").GetValue(control,null);
    control.Parent.Controls.Remove(control);
    }
    }
    return;
    }
      

  4.   

    兄弟,可以寫一點注釋不,謝謝,有此地方還是不怎麼懂ClearControls(Control control)是幹什麼用的?具體實現了什麼,說說你的思路給我好不!謝謝!
      

  5.   

    http://www.microsoft.com/china/msdn/events/webcasts/shared/webcast/consyscourse/ASPNETpractise.aspx
    上面這個網址裏有datagrid的視頻教程,在這個教程裏,有關于datagrid導出excel的部分,你可以參考一下