php 封装原生数据导出的方法(csv文件格式)和csv文件中长数字自动变成科学计数法的处理
如何解决上图长数字自动转换处理?
CSV文件中长数字自动变成科学计数法处理.用程序导出的csv文件,当字段中有比较长的数字字段存在时,在用excel软件查看csv文件时就会变成科学计数法的表现形式.
其实这个问题跟用什么语言导出csv文件没有关系.Excel显示数字时,如果数字大于12位,它会自动转化为科学计数法;如果数字大于15位,它不仅用于科学技术法表示,还会只保留高15位,其他位都变0.
解决方式: 只要把数字字段后面加上显示上看不见的字符即可,字符串结尾加上制表符"\t"
示例demo:
1 <?php 2 /** 3 * 导出数据 4 * @return [type] [description] 5 */ 6 function actionIncome() 7 { 8 //$data数据结构二维数组 9 $data= [ 10 [ 11 'date'=>'20170501', 12 'channel_id'=>'888888888888'."\t", 13 'game'=>'test', 14 'fee'=>'10.00', 15 ] 16 ]; 17 18 $csvData = ''.','.''.','.'统计日报'."\n"; 19 $csvData .= '日期,渠道id,游戏,收入' . "\n"; 20 foreach ($data as $record) { 21 $tmp = array( 22 $record['date'], 23 $record['channel_id'], 24 $record['game'], 25 $record['fee'], 26 ); 27 28 $csvData .= implode(',', $tmp) . "\n"; 29 } 30 exportCsv('统计.csv', $csvData); 31 } 32 33 34 /** 35 * 导出csv文件 36 * @param [type] $filename [description] 37 * @param [type] $data [description] 38 * @return [type] [description] 39 */ 40 function exportCsv($filename, $data) 41 { 42 header("Content-type:text/csv"); 43 header("Content-Disposition:attachment;filename=".$filename); 44 header('Cache-Control:must-revalidate,post-check=0,pre-check=0'); 45 header('Expires:0'); 46 header('Pragma:public'); 47 echo iconv("UTF-8", "GBK//TRANSLIT", $data); 48 exit(); 49 } 50 echo actionIncome();
解决如下图结果: