zoukankan      html  css  js  c++  java
  • 导出数据之CSV[PHP]

      平常开发中,常见的需求就是导出数据为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 不一致导出报错

    解决:

    修改第一个字段的名称即可, 例如:序号

  • 相关阅读:
    mysql之旅【第一篇】
    初探psutil
    Android的ListView分页功能
    Android中用PULL解析XML
    HTTPClient模块的HttpGet和HttpPost
    PB11.5创建及调用WebService
    Android平台使用SQLite数据库存储数据
    高通mm-camera平台 Camera bring up基本调试思路
    在Linux中使用crontab
    Linux 修改 hostname
  • 原文地址:https://www.cnblogs.com/xingxia/p/export_csv.html
Copyright © 2011-2022 走看看