导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


 

原文地址:https://www.cnblogs.com/huige1004/p/1328215.html