PHP 利用fputcsv()函数导出Excel,遇到数值精度超出15位后会自动置为0的解决方法

背景:

项目开发中经常使用fgetcsv()和fputcsv()函数高效导入导出Excel(csv)文件数据,但在使用fputcsv()函数导出Excel,遇到数值精度超出15位的列数据时,此列数据会将超出15位的值自定置为0,这是为什么?如何解决?

 

原因:

导出Excel/Csv文件时,列的数值精度为15位,超出15位后会自动置为0。

例如原始数据为:

[6708209641794310144,6708325755320795136,6708363343607894016,6709441113792450560]

导出CSV文件为:

 

解决方法:

业务处理结果转Excel文件时将数值项前后加制表符"\t"强制转化类型即可,如下:

//处理超出15位后重置0的数字->制表符的字符串
if (is_numeric($value) && strlen($value) > 15) {
    $value = "\t" . $value . "\t";
}

 

posted @ 2020-09-22 16:26  申文哲  阅读(742)  评论(0编辑  收藏  举报