public void ToExcel(System.Web.UI.Control ctl)  
{
HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename=Excel.xls");
HttpContext.Current.Response.Charset ="UTF-8";
HttpContext.Current.Response.ContentEncoding =System.Text.Encoding.Default;
HttpContext.Current.Response.ContentType ="application/ms-excel";//image/JPEG;text/HTML;image/GIF;vnd.ms-excel/msword
ctl.Page.EnableViewState =false;
System.IO.StringWriter  tw = new System.IO.StringWriter() ;
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter (tw);
ctl.RenderControl(hw);
HttpContext.Current.Response.Write(tw.ToString());
HttpContext.Current.Response.End();
}

解决方案 »

  1.   

    强烈建议 把datagrid的数据先写入一个excel文件,然后再把文件下载
    数据写入文件应该不难,下载的代码如下:
    Response.AddHeader("Content-Disposition","attachment;filename=文件名.xls");
    StreamReader srRead = new StreamReader((Stream)File.OpenRead(allname2),Encoding.Default);
    //设置起始点
    srRead.BaseStream.Seek(0, SeekOrigin.Begin);
    srRead.BaseStream.Position = 0;
    char[] buffer = new char[1];
    while (srRead.Read(buffer, 0, 1)==1)  Response.Write(buffer,0,1);
    srRead.DiscardBufferedData();
    srRead.Close();
    Response.End();