小弟用Excel对象在服务器端生成excel但是现在只能在硬盘上生成,现在不需要他在硬盘上生成 而是直接输出到客户端 谢谢

解决方案 »

  1.   

    http://www.cnblogs.com/lovecherry/archive/2005/03/25/125519.html
      

  2.   

    excel对象本身没有提供将文件保存到stream中的方法.只能先保存到硬盘上,然后通过writefile的方法向客户端输出.
      

  3.   

    strHeader = "<div align = 'right'>时间:" + System.DateTime.Now.ToShortDateString() + "</div>";
    Page.Response.Clear();//清空
    Page.Response.Buffer = true;//缓冲输出
    Page.Response.Charset = "UTF-8";
    Page.Response.AppendHeader("Content-Disposition","attachment;filename = Nodedata.xls"); Page.Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
    Page.Response.ContentType = "application/ms-excel";
    this.EnableViewState = false;
    //定义一个输入流
    System.IO.StringWriter StrWrite = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter  HtmlTextWriter = new HtmlTextWriter(StrWrite);
    Page.Response.Write(strHeader);
    this.DataGrid1.RenderControl(HtmlTextWriter);
    Page.Response.Write(StrWrite.ToString());
    Page.Response.End();
      

  4.   

    上面这个方法行,但这种方法导excel 有一点小问题,第一是像0088这种数据导出后,先启一个excel,然后打开这个excel文件,会提示你设定列格式,这样这个数据前面的00才不会丢失。你试试,还有数据中间如果有换行符等等这些,得先去掉。
      

  5.   

    up 最好是输出Excel对象生成的文件
      

  6.   

    private void btnMIME_Click(object sender, System.EventArgs e)
    {
    BindData(); Response.ContentType = "application/vnd.ms-excel";
    Response.AddHeader("Content-Disposition", "inline;filename="
    +   HttpUtility.UrlEncode("下载文件.xls",Encoding.UTF8   )   );    StringBuilder sb=new StringBuilder(); 
    System.IO.StringWriter sw = new System.IO.StringWriter(sb);
    System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(sw);
    sb.Append("<html><body>");
    dgShow.RenderControl(hw);
    sb.Append("</body></html>"); 
    Response.Write(sb.ToString());
    Response.End();
    }