美文网首页
处理大数据导出csv文件

处理大数据导出csv文件

作者: 黑色彼岸 | 来源:发表于2019-12-13 12:03 被阅读0次

    //处理订单状态

    $fileName= "订单列表";

    $header= [

        '订单状态',

        '订单类型',

        '结算状态',

        '主订单号',

        '子订单号',

        '供应商ID',

        '供应商',

        '订单采购金额',

        '订单销售金额',

        '售后退款金额',

        '用户id',

        '会员等级',

        '收货人',

        '收货电话',

        '收货地址',

        '商品SKU',

        '商品名称',

        '规格',

        '商品分类',

        '品牌',

        '销售类型',

        '数量',

        '销售单价',

        '销售总价',

        '采购单价',

        '采购总价',

        '下单时间',

        '支付时间',

    ];  //表头信息

    $fields= [

        'orderStatusName',

        'afterSaleStr',

        'billStatus',

        'orderNumber',

        'parcelNumber',

        'goodsSupplierId',

        'supplierName',

        'allGoodsPurchasingPrice',

        'totalAmt',

        'refundAmt',

        'userId',

        'memberLevelStr',

        'consignee',

        'mobile',

        'codeStringInfo',

        'skuId',

        'orderDetailTitle',

        'goodsSpecification',

        'goodsTypeThreeName',

        'brandName',

        'activityName',

        'goodsNum',

        'goodsTotalAmtE2',

        'totalAmtE2',

        'goodsPurchasingPriceE2',

        'goodsPurchasingPriceE2Total',

        'createdAt',

        'payTimeStr',

    ];

    //设置header

    $header= array_combine($fields,$header);

    BaseFormModel::csvExport($data, $header, [], $fileName, true, 'utf-8');

    /**

    * 导出csv

    * @param array $data 数据

    * @param array $headers csv标题+数据

    * @param array $specHeaders 需要转成字符串的数组下标

    * @param string $fileName 文件名称

    * @param bool $isFirst 是否只去第一条

    * @param string $fontType 需要导出的字符集 csv默认为utf-8

    * @author zhaohao

    * @date 2019-12-10 11:38

    */

    public static function csvExport(array $data, array $headers, $specHeaders = [], $fileName = '',$isFirst = false, $fontType = 'gbk//IGNORE') {

        //终端导出无需header头

        header('Content-Type: application/vnd.ms-excel');

        header('Content-Disposition: attachment;filename="'.$fileName.'.csv"');

        header('Cache-Control: max-age=0');

        $fp= fopen('php://output','a');

        foreach ($headers as $key=> $value) {

            $headers[$key] = mb_convert_encoding($value, $fontType, 'utf-8');

    }

        if($isFirst){

            fputcsv($fp, $headers);

    }

        //计数器

        $num= 0;

        $limit= 50000;

        //逐行取出数据,不浪费内存

        $count= count($data);

        for ($i= 0; $i< $count; $i++) {

            $num++;

            if ($limit%200 == $num) {

                ob_flush();

                flush();

                $num= 0;

    }

            $row= $data[$i];

            $ret= [];

            foreach ($headers as $key=> $value) {

                if(!empty($specHeaders) && in_array($key,$specHeaders)){

                    $ret[$key] = mb_convert_encoding($row[$key], $fontType, 'utf-8')."\t";

                }else{

                    $ret[$key] = mb_convert_encoding($row[$key], $fontType, 'utf-8');

    }

    }

            fputcsv($fp, $ret);

    }

        unset($data);

        unset($ret);

        fclose($fp);

        exit;

    }

    相关文章

      网友评论

          本文标题:处理大数据导出csv文件

          本文链接:https://www.haomeiwen.com/subject/jlrfnctx.html