首页 > 代码库 > html导出到excel数据格式不正确解决方法

html导出到excel数据格式不正确解决方法

  同事离职 ,把手头的程序给我了,第二天客户说:“为什么我们导出的excel不会自己汇总啊??”

。。。。您稍等一下,我看一下哈(我怎么知道你们导出的excel为什么不会汇总啊!!)

打开程序

技术分享

没什么问题,然后导出打开

技术分享

这是神马?合着你导出来的全部是文本格式的了。文本格式存储的数字怎么汇总你告诉我。

看代码吧

技术分享
 1 void exportexcel()
 2     {
 3         DataTable dt = getDataTable();
 4         if (dt != null)
 5         {
 6             Response.Clear();
 7             Response.Buffer = true;
 8             Response.Charset = "GB2312";
 9             Response.AppendHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(exceltitle.Value, System.Text.Encoding.UTF8) + ".xls");
10             Response.ContentEncoding = System.Text.Encoding.UTF8; 
11 
12             Response.ContentType = "application/ms-excel";
13             this.EnableViewState = false;
14             System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
15             System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
16 
17             gvExport = new System.Web.UI.WebControls.GridView();
18             gvExport.DataSource = dt.DefaultView;
19             gvExport.AllowPaging = false;
20             gvExport.DataBind();
21             gvExport.Attributes.Add("style", "vnd.ms-excel.numberformat:@");
22             // 返回客户端 
23             gvExport.RenderControl(oHtmlTextWriter);
24             Response.Write(oStringWriter.ToString());
25             Response.End();
26 
27  
28         }
29         close();
30     }
View Code

excel的数据格式:gvExport.Attributes.Add("style", "vnd.ms-excel.numberformat:@");

下面是常用的一些格式:
1)文本:vnd.ms-excel.numberformat:@  
2)日期:vnd.ms-excel.numberformat:yyyy/mm/dd 
3)数字:vnd.ms-excel.numberformat:#,##0.00 
4)货币:vnd.ms-excel.numberformat:¥#,##0.00 
5)百分比:vnd.ms-excel.numberformat: #0.00% 

你这里输出的格式就是文本啊!果断的改成第三条数字类型的(哈哈,我是不是很聪明)

技术分享

等等,我表头的日期怎么回事,也变成数字了,看到它还有两位小数的就挠头了(失误,失误哈)

gvExport.HeaderRow.Attributes.Add("style", "技术分享vnd.ms-excel.numberformat:@");    

gvExport.Attributes.Add("style", "技术分享vnd.ms-excel.numberformat:#,##0.00");
把表头改成原来的就行了,咱也不去改成时间类型了。
技术分享
ok!完美,perfect!!!
 
 
本文由@巴黎_帅哥 原创,未经同意不得转载

html导出到excel数据格式不正确解决方法