zoukankan      html  css  js  c++  java
  • 导Excel时的科学计数法问题

    在datagrid往excel导数据时,会默认地把一些数值变成用科学计数法表示。

    要解决这个问题,想了很多办法,比如往前面加单引号(在excel中直接在数字前直接输单引号可以让数字正常显示,但在 程序中加入的就不行,不知道为什么),或者是改变类型等等,都没有用,最后用了一个方法,就是在前面加空格。

    以下是我的代码:

     protected void BtnExcel_Click(object sender, EventArgs e)
        {
            dt = (DataTable)Session["dt"];
            //防止excel中sn为科学计数法
            for (int i = 0; i < dt.Rows.Count; i++)
                dt.Rows[i][1] = "&nbsp;" + dt.Rows[i][1].ToString();//空格不是空出一格来,而是它的html标志

            dg2.DataSource = dt.DefaultView;
            dg2.DataBind();
            Response.Clear();
            Response.Buffer = true;
            Response.Charset = "GB2312";
            Response.AppendHeader("Content-Disposition", "attachment;filename=PanDataList.xls");
            Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");//设置输出流为简体中文
            Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。
            EnableViewState = false;
            System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN", true);
            System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
            System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
            dg2.RenderControl(oHtmlTextWriter);
            Response.Write(oStringWriter.ToString());
            dg2.ShowHeader = false;
            Response.End();
        }

    这样导出的excel文档就是正常的了。

    在网上有搜到这篇文章,但时间太少,来不及试验其中的做法。

    稍后有时间再补上。http://www.cnblogs.com/huomm/articles/982862.html


     

  • 相关阅读:
    Elasticsearch常用命令
    Linux中使用systemctl操作服务、新建自定义服务
    Windows下安装MongoDB解压版
    Java执行cmd命令、bat脚本、linux命令,shell脚本等
    Ubuntu
    PostgreSQL删除数据库失败处理
    Ubuntu service 命令
    Ubuntu18修改/迁移mysql5.7数据存放路径
    攻防世界-web-ics-02(sql注入、ssrf、目录扫描)
    攻防世界-web-filemanager(源码泄漏、二次注入)
  • 原文地址:https://www.cnblogs.com/huige1004/p/1328215.html
Copyright © 2011-2022 走看看