zoukankan      html  css  js  c++  java
  • GridView导出成Excel字符"0"丢失/数字丢失的处理方式 收藏

    GridView导出成Excel字符"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();

      

      别忘了

    类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内。

    在 aspx.cs
    里加

    public override void VerifyRenderingInServerForm(Control control)
    {
    //base.VerifyRenderingInServerForm(control);

    <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="ExportWordByIO.aspx.cs" Inherits="_Default" EnableEventValidation = "false"  %>

  • 相关阅读:
    多态实现--虚函数与纯虚函数
    CentOS6编译安装gcc高版本
    Linux多进程CS服务器简单测试
    Linux单用户CS模型TCP通讯完全注释手册
    进程线程及其状态
    Java学习-字符串、字符、ASCII、数字的互相转换
    Java学习-素数
    Java学习-日期
    Java学习-多态
    Java学习-练习
  • 原文地址:https://www.cnblogs.com/qqhfeng/p/4647795.html
Copyright © 2011-2022 走看看