System.IO.FileStream fs = System.IO.File.OpenRead( strDownPath );
byte[] FileData = new byte[ fs.Length ];
fs.Read( FileData, 0, ( int ) fs.Length );
refPage.Response.Clear();
refPage.Response.AddHeader( "Content-Type", MyContentType );
string FileName = System.Web.HttpUtility.UrlEncode( System.Text.Encoding.UTF8.GetBytes( _FileName ) );
refPage.Response.AddHeader("Content-Disposition", "inline;filename="+ System.Convert.ToChar(34) + FileName + System.Convert.ToChar(34) );
refPage.Response.AddHeader("Content-Length", fs.Length.ToString() );
refPage.Response.BinaryWrite( FileData );
fs.Close();
System.IO.File.Delete( _FilePath );
refPage.Response.End();

解决方案 »

  1.   

    用这个导出就OK了protected void toExcel_Click(object sender,EventArgs e) 
          { 
             ToExcel(parentList); 
          }       private void ToExcel(System.Web.UI.Control ctl) 
          { 
             Response.Charset="GB2312"; 
             Response.AppendHeader("Content-Disposition","attachment;filename=Excel.xls");  
             Response.ContentEncoding = System.Text.Encoding.UTF8; 
             Response.ContentType = "application/ms-excel";          ctl.Page.EnableViewState = false; 
             System.IO.StringWriter tw = new System.IO.StringWriter(); 
             System.Web.UI.HtmlTextWriter hw = new HtmlTextWriter(tw);          ctl.RenderControl(hw);          Response.Write(tw.ToString()); 
             Response.End(); 
          }
      

  2.   

    to  gOODiDEA(无语):
    我把你的这段代码加到我的那段代码之后试了一下,
    发现没有出现“保存文件“的对话框,而是直接把生成的这个excel文件在页面上打开了啊!
    哪儿出错了?
      

  3.   

    to  gOODiDEA(无语):
    我把代码里的MyContentType改成"attachment;filename=defaultname.xls"
    另外,由于找不到refPage,所以把refPage也删掉后,
    再运行时,
    发现没有出现“保存文件“的对话框,而是直接把生成的这个excel文件在页面上打开了啊!
    哪儿出错了?
      

  4.   

    to felixl(★★★★★★):
    你的这段代码加到我的那段代码哪儿呢?
    我看了半天也不知道该加到哪儿啊。
    另外,我想调用ToExcel(ctl)的话,这个ctl参数该传什么啊?
    你调用这个函数的时候用的是ToExcel(parentList); 
    这里的parentList是哪儿来的啊?
    看了半天也没有看明白啊
      

  5.   

    调用此函数:
    private void delwenjian(string filename)
    //filename为要下载文件的路径及相应路径下的文件名
    {
    FileInfo fi=new FileInfo(filename);
    Response.Clear();
    Response.ClearHeaders();
    Response.Buffer = false;
    Response.ContentType = "application/octet-stream";
    Response.AppendHeader("Content-Disposition","attachment;filename=" +HttpUtility.UrlEncode(fi.FullName,System.Text.Encoding.UTF8));
    Response.AppendHeader("Content-Length",fi.Length.ToString());
    Response.WriteFile(fi.FullName);
    Response.Flush();
    System.IO.File.Delete(filename);
    Response.End();
    }