zoukankan      html  css  js  c++  java
  • php 快速导出大量CSV文件

    原文链接

    https://segmentfault.com/a/1190000005366832
     /**
     * 导出excel(csv)
     * @data 导出数据
     * @headlist 第一行,列名
     * @fileName 输出Excel文件名
     */
    function csv_export($data = array(), $headlist = array(), $fileName) {
      
        header('Content-Type: application/vnd.ms-excel');
        header('Content-Disposition: attachment;filename="'.$fileName.'.csv"');
        header('Cache-Control: max-age=0');
      
        //打开PHP文件句柄,php://output 表示直接输出到浏览器
        $fp = fopen('php://output', 'a');
        
        //输出Excel列名信息
        foreach ($headlist as $key => $value) {
            //CSV的Excel支持GBK编码,一定要转换,否则乱码
            $headlist[$key] = iconv('utf-8', 'gbk', $value);
        }
      
        //将数据通过fputcsv写到文件句柄
        fputcsv($fp, $headlist);
        
        //计数器
        $num = 0;
        
        //每隔$limit行,刷新一下输出buffer,不要太大,也不要太小
        $limit = 100000;
        
        //逐行取出数据,不浪费内存
        $count = count($data);
        for ($i = 0; $i < $count; $i++) {
        
            $num++;
            
            //刷新一下输出buffer,防止由于数据过多造成问题
            if ($limit == $num) { 
                ob_flush();
                flush();
                $num = 0;
            }
            
            $row = $data[$i];
            foreach ($row as $key => $value) {
                $row[$key] = iconv('utf-8', 'gbk', $value);
            }
    
            fputcsv($fp, $row);
        }
      }
  • 相关阅读:
    PL/SQL Developer连接Oracle
    Oracle 11g 监听命令
    Oracle 11g的登陆问题
    PL/SQL Developer 配置和使用
    KMP应用求两个字符串的最长公共子串
    msc pool概念
    nformix调优之执行计划取得
    lsof 与fuser
    informix onstat命令收集
    各类系统上查看占cpu最多的进程
  • 原文地址:https://www.cnblogs.com/alin-qu/p/5825123.html
Copyright © 2011-2022 走看看