导出数据之CSV[PHP]
原创
©著作权归作者所有:来自51CTO博客作者zlixing的原创作品,请联系作者获取转载授权,否则将追究法律责任
平常开发中,常见的需求就是导出数据为Excel,CSV格式的表格。所以,在此记录一下导出CSV数据的小方法
平常开发中,常见的需求就是导出数据为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。
解决:
只要把数字字段后面加上显示上看不见的字符即可,字符串前面或者结尾加上制表符"\t".
php 程序可以这样判断,注意一定是"\t",不是'\t'.
2.导出数据到文件, 打开文件的时候出现错误提示,is SYLK文件
原因:这是由于你的文件中的第一个字段位置是ID,导致被认为是SYLK文件,而该文件的扩展名为csv 不一致导出报错
解决:
修改第一个字段的名称即可, 例如:序号