php中导出excel时 数字显示问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php中导出excel时 数字显示问题相关的知识,希望对你有一定的参考价值。

本人初学php,想用php语言开发一个信息管理系统,导出excel文件时,excel文件中的身份证号码是用科学计数法显示的,我在网上找了很多资料,但是都没有解决,我只有用在身份证号码前加“'”这个单撇号来暂时解决,但是在每个身份证号前都加一个符号又不好看。
那位高手可以帮帮我,教我怎么用php语言,设置数字得显示格式为文本。
在下不甚感激!
先给到20分,如果回答得好有额外加分! 谢谢了!~~
bobzsj87 我的意思不是你想的那样的,我的意思是不用再在excel里面去修改,而是由php在导出时自动设置某些单元格的显示格式。
tony514 主要是我不想有那个单引号,就想像移动公司导出的通话详单那样,时间可电话号码可以直接导出为正常显示的,而不加其他的符号!
tszjlove 谢谢你的回答,我数据库身份证号码是用的char类型,难道是这个影响了输出的格式?? 应该用varchar??

不是php的问题,是excel的格式不对。

到excel,设置单元格格式,选择数字,设置小数点0位,就可以了
参考技术A 这个没有解决办法,连微软自己的outlook导出的.cvs文件都是这个样子的

如果你导出的是纯excel文件,可以试试用com来实现对单元格格式的定义,不知是否可行

我的办法都是加个东西吧它变成非数字。
参考技术B 你弄的也对啊。在excel中如果区分数字和字符就是加单'。你不信做个试验。打开excel,输入省份证号如果不加单‘就会自动科学计数 参考技术C 这个不是由你来定的,我也有用PHP将数据库导出成EXCEL.PHP只能做到控制写什么.
你那身份证号的变量定义是什么?是INT还是VARCHAR?
至于你说的那个问题我觉得由于EXCEL里面设置不一样造成的,用科学计数法显示可能是由于列的宽度不够早晨的.或者是数字前无效0过多的原因.
可以变一下数据库变量的定义试试,如果这个不管用的话,那就不应该是PHP能解决的问题了.

js 中导出excel 较长数字串会变成科学计数法

转自:http://www.cnblogs.com/jwh-452951171/p/5817753.html

    项目中用到了前段分页,所以遇到日期格式和身份证号过长的就需要自定义,我的是在ajax的success成功之后,自定义td,然后添加样式如下:
$('td:eq(5)', nRow).html("<p style=\\"mso-number-format:'\\@';\\">"+checkNull(aData.identification)+"</p>");
   我的日期格式是2016-01的格式,导出来的时候直接为文本就好,如下:

  样式如下,我试过使用双引号""的形式无法识别,改为单引号就可以了
mso-number-format:'\\@';



js 中导出excel 较长数字串会变成科学计数法

 

在做项目中,碰到如题的问题。比如要将居民的信息导出到excel中,居民的身份证号码因为长度过长(大于10位),excel会自动的将过长的数字串转换成 科学计数法。现在网上找到解决方案之一:

(在数字串前后加 " " 或' ' 或 tab等空白内容都是行不通的,excel会自动去掉这些。除非你在数字串中间加,当然这样就不是我们要的结果了)

 

解决方案之一:<td style="mso-number-format:'\\@';">100821199909091234</td>

增加了  style="mso-number-format:'\\@';"  样式后 可以解决 ,

(以上为亲自测试过,可行)!

另外网上有称增加css样式可行的,找了几个试了下,没找到正确的。

 

 

 

其他自定义单元格格式 样式

 

 

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)


以上是关于php中导出excel时 数字显示问题的主要内容,如果未能解决你的问题,请参考以下文章

在 Excel 工作表单元格中导出数据

尝试使用laravel在excel中导出大数据时显示超时

在 HTML 文件中导出 PHP 表

wamp 服务器无法在 CodeIgniter 中导出 Phpexcel 文件

PHP中导出Excel,将数据以Excel形式导出

Yii框架中导出excel文件