小弟做了一个导出excel的功能,导出的是伪excel,具体代码如下:
  protected void btnExcle_Click(object sender, EventArgs e)
        {             HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename="aaa.xls.xls" + "");
            HttpContext.Current.Response.Charset = "UTF-8";
            HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
            HttpContext.Current.Response.ContentType = "application/ms-excel/ms-word";
            System.IO.StringWriter tw = new System.IO.StringWriter();
            System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
            goExcel.RenderControl(hw);
            HttpContext.Current.Response.Write(tw.ToString());
            HttpContext.Current.Response.End();
          
        }
注意:需导出的页面中存在跨行的情况,导出后,前面一千多行是正常的,但是一千多行后面的数据,格式就乱了,该跨行的列没有跨行了。请问大侠们,如何解决呢?小弟不想用导出ds的方法,就想直接导出页面。

解决方案 »

  1.   

     //输出导出结果到客户端
                HttpContext.Current.Response.ContentType = "application/ms-excel";
                HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpContext.Current.Server.UrlEncode(sheetName) + ".xls");
                HttpContext.Current.Response.BinaryWrite(File.ReadAllBytes(excelPath));            if (dt.Rows.Count > 10000)
                    HttpContext.Current.Response.Write("<script language=\"javascript\" type=\"text/javascript\">EndRequest2();</script>");            //删除创建的临时文件
                File.Delete(excelPath);
      

  2.   

    你这是吧页面上的table组成的html导出成excel 么,如果这样的话是不是页面的html转换到流文件时候html标签出了问题呢?
      

  3.   

    先参考这个, 我找下我上次解决方法的代码
    private void Export(GridView _gv, string FileName)
        {
            Response.Clear();
            Response.Buffer = true;
            Response.Charset = "GB2312";
            Response.Write("<meta http-equiv=Content-Type content=text/html;charset=GB2312>");
            Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());//FileName.xls");
            Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
            Response.ContentType = "application/vnd.xls";//设置输出文件类型为excel文件。
            System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
            System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
            _gv.RenderControl(oHtmlTextWriter);
            Response.Output.Write(oStringWriter.ToString());
            Response.Flush();
            Response.End();    }
        public override void VerifyRenderingInServerForm(Control control)
        {
        }------------------------public void ToExcel()//整个GRIDVIEW导出到EXCEL
        {
            string filename="网银终端" + DateTime.Now.ToString("yyyyMMdd") + ".xls";
            string style = @"<style> .text { mso-number-format:/@; } </script> "; //解决第一位字符为零时不显示的问题
           
            this.GridView1.AllowPaging = false;
            this.GridView1.DataBind();        filename = HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8);//解决导出EXCEL时乱码的问题
            Response.ClearContent;
           
            Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
            Response.ContentType = "application/excel";
            Response.AppendHeader("Content-Disposition", "attachment;filename=" + filename);        System.IO.StringWriter sw = new System.IO.StringWriter();//定义一个字符串写入对象
            HtmlTextWriter htw = new HtmlTextWriter(sw);//将html写到服务器控件输出流
           
            this.GridView1.RenderControl(htw);//将控件GRIDVIEW中的内容输出到HTW中
            Response.Write(style);
            Response.Write(sw);
            Response.End();        this.GridView1.AllowPaging = true;
        }
      

  4.   

    仅仅做参考吧
    http://jasondct.blog.163.com/blog/static/81820673201111481221348/
      

  5.   

    是的 推荐这个NPOI,不过现在维护的还是有一些bug,不过应该不会遇到bug吧。
      

  6.   

    自己可以做一些测试,excel虽然支持html格式,但是和ie比还是有很多不同,特别对div支持不好,还有css,js的问题,具体问题要具体分析。
      

  7.   

    我也推荐一下
    http://blog.csdn.net/liaodajian/article/details/3501699