小余

灵感源于交流,创新出自思考

导航

GridView导出成Excel字符"0"丢失的处理方式

Posted on 2008-04-17 12:46  小余(Yice)  阅读(1221)  评论(0编辑  收藏  举报
   GridView 导出成Excel文件,这个代码在网上比较多.但是发现存在一个问题,导出的数据中如果有"012457890"的内容,用Excel打开后就变成了"12457890",少了前面的0;原因是Excel把它当作数字来格式化了,就把"0"给去掉了.
   解决思路:在Excel中作一个包含有"012457890"的内容,设定单元格的显示方式,然后保存成Html的文件,在查看源代码.
发现在CSS格式定义中有:td{mso-number-format:"\@";}.这样问题就容易解决了.
实际伤得代码只是比常见的处理方式多了一句而已.
  
        HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.Buffer 
= true;
        HttpContext.Current.Response.Charset 
= "UTF-8";
        HttpContext.Current.Response.AppendHeader(
"Content-Disposition""attachment;filename=WebOrderExcelFile.xls");
        HttpContext.Current.Response.ContentEncoding 
= System.Text.Encoding.UTF8;
        HttpContext.Current.Response.ContentType 
= "application/ms-excel";

        
string strStyle = "<style>td{mso-number-format:\"\\@\";}</style>";
        System.IO.StringWriter tw 
= new System.IO.StringWriter();
        HtmlTextWriter hw 
= new HtmlTextWriter(tw);
        gvOrder.Page.EnableViewState 
= false;
        tw.WriteLine(strStyle);
        gvOrder.RenderControl(hw);        
        HttpContext.Current.Response.Write(tw.ToString());
        HttpContext.Current.Response.Flush();
        HttpContext.Current.Response.End();