PHP使用fputcsv导出CSV时长整数显示为科学计数法的问题
解决PHP fputcsv生成CSV时长整数显示为科学计数法的问题
这个问题本质是Excel等表格软件会把过长的数字自动识别为数值类型,进而用科学计数法显示,同时开头的前导零也会被丢失。要让长整数以完整文本形式显示,需要在输出时给这些字段添加标识,强制软件识别为文本。
方法一:添加制表符前缀
在长整数前拼接\t(制表符),Excel会将其识别为文本,完整显示数字且保留前导零:
fputcsv($file, array('Id','DESTINATION_ACCOUNT','SOURCE_ACCOUNT')); if(!empty($data)){ foreach($data as $key => $row){ fputcsv($file, [ $row['ID'], "\t" . $row['DESTINATION_ACCOUNT'], "\t" . $row['SOURCE_ACCOUNT'] ]); } }
方法二:添加单引号前缀并包裹
给长整数前加单引号',Excel打开时会自动隐藏单引号,以文本形式显示完整数字:
fputcsv($file, array('Id','DESTINATION_ACCOUNT','SOURCE_ACCOUNT')); if(!empty($data)){ foreach($data as $key => $row){ // 单引号前缀让Excel识别为文本 $destAccount = "'" . $row['DESTINATION_ACCOUNT']; $sourceAccount = "'" . $row['SOURCE_ACCOUNT']; fputcsv($file, [ $row['ID'], $destAccount, $sourceAccount ]); } }
注意事项
- 制表符前缀在纯文本编辑器中会显示为空白,但Excel处理正常;
- 单引号前缀在Excel中不会显示,纯文本查看时会看到单引号,可根据需求选择合适的方法。
内容的提问来源于stack exchange,提问作者Md. Abdul Hannan
相关产品推荐
相关产品推荐

