分享你我的心得.
共乘一片美好网络.

html页面表格导出excel出现科学计数法问题的解决

用IE的用户,如果一个html页面有table的话,可以把table导出到excle文件里面,但是经常遇到会把身份证等数字比较长的数据改成科学计数法来显示。很是头疼。
有说加个单引号可以解决,但是我这里测试,显示和导出的结果都有单引号。效果不好。
同事找到一个解决方案比较好。在html页面里面加上一段css
然后在出现问题的字段应用这种style就可以了。
测试通过。神奇

<styletype=”text/css”>
<!–
td{
background-color:#FFFFFF;
}

.txt
{padding-top:1px;
padding-right:1px;
padding-left:1px;
mso-ignore:padding;
color:black;
font-size:11.0pt;
font-weight:400;
font-style:normal;
text-decoration:none;
font-family:宋体;
mso-generic-font-family:auto;
mso-font-charset:134;
mso-number-format:”\@”;
text-align:general;
vertical-align:middle;
mso-background-source:auto;
mso-pattern:auto;
white-space:nowrap;}
–>
</style>
我试了发现上面的不管用,搜索发现网上还有一种说法:
—————————————————–

查了大半天终于查到了一点有用的资料,现在摘抄如下:

“首先,我们了解一下excel从web页面上导出的原理。当我们把这些数据发送到客户端时,我们想让客户端程序(浏览器)以excel的格式读取它,所以把mime类型设为:application/vnd.ms-excel,当excel读取文件时会以每个cell的格式呈现数据,如果cell没有规定的格式,则excel会以默认的格式去呈现该cell的数据。这样就给我们提供了自定义数据格式的空间,当然我们必须使用excel支持的格式。下面就列出常用的一些格式:
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%
这些格式你也可以自定义,比如年月你可以定义为:yy-mm等等。那么知道了这些格式,怎么去把这些格式添加到cell中呢?很简单,我们只需要把样式添加到对应的标签对(即闭合标签)即可。如<td></td>,给标签对<td></td>添加样式,如下: <td style=”vnd.ms-excel.numberformat:@”>410522198402161833</td>
同样,我们也可以给<div></div>添加样式,也可以给<tr></tr>,<table></table>添加样式;当我们在父标签对和子标签对都添加样式时,数据会以哪一个样式呈现呢?经过测试,会以离数据最近的样式呈现.

于是按照他说的方法设置了导出数据时对应的身份证列的<td>的样式:

echo “<td style=’vnd.ms-excel.numberformat:@’>”.$printable.”</td>\n”;

果然成功了,没有枉费了查半天的资料。

—————————————————–
我测试正确的:

结果测试时发现,在前面加个 ‘ 就可以了。只不过在页面上显示时要隐藏掉

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”>
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<style>
.txt{
display:none;
}
</style>
<SCRIPT LANGUAGE=”JavaScript”>

function ExpExcel(){
// Start Excel and get Application object.
var oXL = new ActiveXObject(“Excel.Application”);
// Get a new workbook.
var oWB = oXL.Workbooks.Add();
var oSheet = oWB.ActiveSheet;
//var table = document.all.data;
var table=document.getElementById(“dataTab”);
var hang = table.rows.length;
var lie = table.rows(0).cells.length;

// Add table headers going cell by cell.
for (i=0;i<hang;i++){
for (j=0;j<lie;j++){
oSheet.Cells(i+1,j+1).Value = table.rows(i).cells(j).innerText;
}
}
oXL.Visible = true;
oXL.UserControl = true;
}

</script>
</HEAD>

<BODY>
<input type=”button” value=”导出EXCEL” onclick=”ExpExcel()”/>
<table border=”1″ id=”dataTab”>
<tr>
<th>Month</th>
<th>Savings</th>
<th>mobile</th>
</tr>
<tr>
<td>January</td>
<td>$100</td>
<td><font >'</font>13633936220</td>
</tr>
<tr>
<td>January</td>
<td>$100</td>
<td><font >'</font>13633936220</td>
</tr>
<tr>
<td>January</td>
<td>$100</td>
<td><font >'</font>13633936220</td>
</tr>
</table>
</BODY>
</HTML>

赞(0)
未经允许不得转载:小叶白龙博客 » html页面表格导出excel出现科学计数法问题的解决
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!