欢迎加入站点基地设计开发交流群:30720409
详细内容
.Net导出Excel时前面的0被去掉了
发布日期:2013-07-26     点击:2356     字体:[ ]

在导出Excel时,纯数字字符串会被当成数字处理,如果数字开头是0,将会被无情的去掉,例如某个字段为 0001,那么导出后盖列值就是1,下面提供几种解决办法,让其不去掉数字前面的0.

1.比较通用的办法是查询数据的时候,在数字前面加单引号,据说这样可以强制转换为文本,例如:

sql server可以这样写:SELECT EXNUM FROM ZDBASE --> SELECT ('' + EXNUM) AS EXNUM FROM ZDBASE
Oracle这样写:SELECT EXNUM FROM ZDBASE --> SELECT ('' || EXNUM) AS EXNUM FROM ZDBASE

我测试时虽然转字符串了,但导出时前面的0仍然被去掉了,如果加两个单引号,导出时数据前面会显示一个单引号,方法感觉行不通

2.查出数据后修改数据的值

例如,查出数据后的DataTable dt,列EXNUM,我们循环每一行的这一列,给这一列值加单引号改变其值,这样导出时可以强制显示完整内容

foreach (DataRow dr in dt.Rows)
{
        dr["EMP_NO"] = string.Format("<font color='#ffffff'>{0}</font>{1}", "'", dr["EMP_NO"].ToString());
}

3.网上还有一种方法是用格式,把有问题列的值转换一下格式:

mso-number-format:"0"    NO Decimals
mso-number-format:"0/.000"    3 Decimals
mso-number-format:"/#/,/#/#0/.000"    Comma with 3 dec
mso-number-format:"mm//dd//yy"    Date7
mso-number-format:"mmmm/ d/,/ yyyy"    Date9
mso-number-format:"m//d//yy/ h/:mm/ AM//PM"    D -T AMPM
mso-number-format:"Short Date"    01/03/1998
mso-number-format:"Medium Date"    01-mar-98
mso-number-format:"d/-mmm/-yyyy"    01-mar-1998
mso-number-format:"Short Time"    5:16
mso-number-format:"Medium Time"    5:16 am
mso-number-format:"Long Time"    5:16:21:00
mso-number-format:"Percent"    Percent - two decimals
mso-number-format:"0%"    Percent - no decimals
mso-number-format:"0/.E+00"    Scientific Notation
mso-number-format:"/@"    Text
mso-number-format:"/#/ ???//???"    Fractions - up to 3 digits (312/943)
mso-number-format:"/0022£/0022/#/,/#/#0/.00"    £12.76
mso-number-format:"/#/,/#/#0/.00_ /;/[Red/]/-/#/,/#/#0/.00/ "   
2 decimals, negative numbers in red and signed
(1.56   -1.56)

 

 

用法举例:

当我们用<%@page contentType="application/vnd.ms-excel; charset=UTF-8"%>的方法导出jsp文件为excel时,如果导出的数据中有数字以0开头,则该0会被省略,为了保留这个处于首位的0,可以在表格的style中加入:

style='mso-number-format:"/@";'

这样的话,导出的表格中首位为0的数字就会将0保留啦!

.Net也一样,设置样式就可以了:

style='mso-number-format:general;mso-number-format:"/@"'

用户评论
昵称 
内容  *
验证码   
   
Copyright © 2010 zdbase.com All Rights Reserved. 苏ICP备15039389号-1 可人软件设计