平常开发中,常见的需求就是导出数据为Excel,CSV格式的表格。所以,在此记录一下导出CSV数据的小方法
$fileName = 'demo.csv'; $data = [ ['id'=>1,'name'=>'李','age'=>23], ['id'=>2,'name'=>'行','age'=>13] ]; exportCsv($fileName,$data,false); function exportCsv($fileName,$data,$is_download=true) { set_time_limit(0); ini_set('memory_limit','512M'); if(!$is_download){ $output = fopen('php://output','w'); }else{ $output = fopen($fileName, 'w'); } header("Content-Type: application/csv;charset=UTF-8"); header("Content-Disposition: attachment; filename=$fileName"); if(!$data || !is_array($data)) return false; foreach($data as $v){ fputcsv($output, array_values($v)); } fclose($output); }
常见问题:
1.导出订单号到csv文件中自动变科学计数法
其实这个问题跟用什么语言导出csv文件没有关系。Excel显示数字时,如果数字大于12位,它会自动转化为科学计数法;如果数字大于15位,它不仅用于科学技术费表示,还会只保留高15位,其他位都变0。
解决:
只要把数字字段后面加上显示上看不见的字符即可,字符串前面或者结尾加上制表符" ".
php 程序可以这样判断,注意一定是" ",不是' '.
2.导出数据到文件, 打开文件的时候出现错误提示,is SYLK文件
原因:这是由于你的文件中的第一个字段位置是ID,导致被认为是SYLK文件,而该文件的扩展名为csv 不一致导出报错
解决:
修改第一个字段的名称即可, 例如:序号