zoukankan      html  css  js  c++  java
  • php csv导出

    /**
    * 下载csv
    * @param unknown $orders_id
    * @param unknown $orders_date_start
    * @param unknown $orders_date_end
    */
    public function csvDown($orders_id,$orders_date_start,$orders_date_end,$title='ordersSales'){

    // 输出Excel文件头,可把user.csv换成你要的文件名
    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment;filename="'.$title.'.csv"');
    header('Cache-Control: max-age=0');


    // 打开PHP文件句柄,php://output 表示直接输出到浏览器
    $fp = fopen('php://output', 'a');

    //在服务器生成一个文件
    /* $title = $title . ".csv";
    $filePath = APP_PATH.'/Runtime/Temp/'.$title;
    $fp = fopen($filePath, 'a'); */

    // 输出Excel列名信息
    $head = array('12','34','平台','店铺','下单日期','客户ID','销售额','成本','运费(含处理费)','手续费&成交费','利润','利润率');
    foreach ($head as $i => $v) {
    // CSV的Excel支持GBK编码,一定要转换,否则乱码
    $head[$i] = iconv('utf-8', 'gbk', $v);
    }

    // 将数据通过fputcsv写到文件句柄
    fputcsv($fp, $head);

    // 下載內容
    $saleForms = new ErpCOrdersSaleForms();

    // 获取订单总数
    $total = $saleForms->getOrdersSaleTotal($orders_id,$orders_date_start,$orders_date_end);

    $num = 5000;
    $count = ceil($total / $num);

    // 计数器
    $cnt = 0;
    // 每隔$limit行,刷新一下输出buffer,不要太大,也不要太小
    $limit = 5000;

    for ($i=1; $i <= $count; $i++){
    $start = ($i-1) * $num;
    $returnInfo = $saleForms->ordersSaleRun($orders_id,$orders_date_start,$orders_date_end,$start,$num);

    foreach ($returnInfo['items'] as $row) {

    $cnt ++;
    if ($limit == $cnt) { //刷新一下输出buffer,防止由于数据过多造成问题
    ob_flush();
    flush();
    $cnt = 0;
    }
    // CSV的Excel支持GBK编码,一定要转换,否则乱码
    $temp = array();
    foreach ($row as $v){
    $temp[] = iconv('utf-8', 'gbk', $v);
    }
    fputcsv($fp, $temp);
    unset($temp);
    }
    };

    fclose($fp);
    }

    如果数据非常大

    可以改变运行内存和php请求运行时间来解决

  • 相关阅读:
    Poly2Tri介绍[转]
    Threejs 开发3D地图实践总结【转】
    cesium and three.js【转】
    Three.js中如何显示帧速【转】
    Cesium学习笔记(七):Demo学习(自由控制飞行的飞机)[转]
    cesium原理篇(三)--地形(1)【转】
    cesium原理篇(二)--网格划分【转】
    Cesium原理篇:3D Tiles(1)渲染调度【转】
    shell脚本监控阿里云专线网络状态,若不通通过触发阿里云的进程监控报警
    jstat命令总结
  • 原文地址:https://www.cnblogs.com/shaoshao/p/4341228.html
Copyright © 2011-2022 走看看