> 백엔드 개발 > PHP 튜토리얼 > php导出CSV时,超长数字精度丢失问题与前导0的字符串丢失0的问题解决

php导出CSV时,超长数字精度丢失问题与前导0的字符串丢失0的问题解决

WBOY
풀어 주다: 2016-06-23 13:45:20
원래의
1730명이 탐색했습니다.

php生成的CSV有时候会遇到两个特殊情况:

1、输出的字段中,含有超长数字(18位的数字)比如身份证:122121197410180016,就算输出时字段加上"",还是会被识别成数字,并且丢失精度,后面的4位会变成0,象这个样子122121197410180000

2、输出的字段中,含有前导0的数字字符串,会被强制丢掉前导0。比如:01082151122,或者00001,00002,系统会强制识别成 1082151122,1,2这样的数字。


针对上面的问题,只能说excel太邪恶了,无法通过常规办法没法解决。非常归方案有2个:

1、可以在excel中通过,菜单->数据->导入文本数据 这个方式来手动设定字段为文本类型然后导入,但是这个对于用户而言操作难度太大了,因此这个方式不可行。

2、用更邪恶的办法搞定excel,在字段末尾加上一个 \t 的制表符,"\t"很特殊,在excel是不会被显示出来的但他的确存在,然后打开文件的时候这个字段就会被默认当成字符串来处理了。(后遗症就是字段里确实有一个\t在里面,入如果只是拿来看到是没有问题,但是还要把这个东西导入异构系统时 \t 会导致不可预知的错误)。

唉,自己权衡吧,我也只想到这两个方案。万恶的excel。

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿