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

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

 

IE

的用户,如果一个

html

页面有

table

的话,可以把

table

导出到

excle

文件里面,但是经常遇到会把身份证等数字比较长的数据改成科学计数法来显

示。很是头疼。

有说加个单引号可以解决,

但是我这里测试,

显示和导出的结果都有单引号。

果不好。

同事找到一个解决方案比较好。在

html

页面里面加上一段

css

然后在出现问题的字段应用这种

style

就可以了。

测试通过。神奇

<

styletype

="

text

/

css

">

<!--

td

{

background-color:

#FFFFFF

;

}

.txt

{

padding-top:

1

px

;

padding-right:

1

px

;

padding-left:

1

px

;

mso-ignore:

padding;

color:

black

;

font-size:

11.0

pt

;

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" οnclick="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 class="txt">'</font>13633936220</td>

</tr>

<tr>

<td>January</td>

<td>$100</td>

<td><font class="txt">'</font>13633936220</td>

</tr>

<tr>

<td>January</td>

<td>$100</td>

<td><font class="txt">'</font>13633936220</td>

</tr>

</table>

</BODY>

</HTML>

利用

Excel

mso-number-format

语法,指定成

CSS

格式即可:

<style type="text/css">

<!--

td {

mso-number-format:"\@";

}

-->

</style>

mso-nubber-format

的格式用法如下:

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值