• 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请求运行时间来解决

  • 相关阅读:
    如何运用领域驱动设计
    如何运用领域驱动设计
    linq Select与SelectMany的区别
    linq GroupBy 多字段分组
    Enumerable<T>的GroupJoin 方法和Join的用法和区别
    使用vscode搭建vue开发环境
    C# Windows服务发布生成步骤
    C#使用表驱动算法实现多层if或者switch语句重构
    记一次服务器重启后应用程序启动出错
    项目中的NLog日志记录
  • 原文地址:https://www.cnblogs.com/shaoshao/p/4341228.html
Copyright © 2020-2023  润新知