none
导出到execl时,报错。请高手分解一下啊 RRS feed

  • 问题

  • public void ToExcel(System.Web.UI.Control ctl, string FileName)
    {
    HttpContext.Current.Response.Charset = "UTF-8"; // 或UTF-7 以防乱码
    HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
    HttpContext.Current.Response.ContentType = "application/ms-excel";
    HttpContext.Current.Response.AppendHeader("Content-Disposition", "inline;filename=" + "" + FileName + ".xls");
    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();
    ctl.Page.EnableViewState = false;
    }

    --调用方法,导出数据

        protected void Button2_Click(object sender, EventArgs e)
            {
                data();//获取数据
                ToExcel(this.Panel_excel,DateTime.Now.ToShortDateString()+"长途电话清单");//这句话中不能出现汉字,否则就提示:无法下载,方法中也设置了utf8,是不是浏览器的问题?我用的是ie8,如何处理?
            }

    2010年3月29日 8:50

答案

  • 你好!

    这不是浏览器的问题。把汉字部分编码一下就可以了。

    HttpContext.Current.Response.AppendHeader("Content-Disposition", "inline;filename=" + Server.UrlEncode(FileName) + ".xls");


    知识改变命运,奋斗成就人生!
    • 已标记为答案 fangyanqin 2010年4月1日 2:46
    2010年3月30日 1:58
    版主

全部回复

  • 你好!

    这不是浏览器的问题。把汉字部分编码一下就可以了。

    HttpContext.Current.Response.AppendHeader("Content-Disposition", "inline;filename=" + Server.UrlEncode(FileName) + ".xls");


    知识改变命运,奋斗成就人生!
    • 已标记为答案 fangyanqin 2010年4月1日 2:46
    2010年3月30日 1:58
    版主
  • 汉字需要进行编码:HttpUtility.HtmlEncode(fileName);

    空格需要在filename的两边加上“ like:”file name“

    2010年3月31日 9:31
  • 谢谢您,按您的方法,解决了
    2010年4月1日 2:47