php 导出csv

 

class ActivationCodeService
{
    /**
     * 导出激活码
     * @author YangYunHao
     * @date 2021-02-24 14:56:16
     * @param array $param:请求参数
     */
    public static function exportCode(array $param)
    {
        set_time_limit(0);
        $date = date('YmdHis');
        header('Content-Type: application/vnd.ms-excel');
        header("Content-Disposition: attachment;filename={$date}.csv");
        header('Cache-Control: max-age=0');

        $where  = [
            'vac_vip_level' => $vipLevel,
            'vac_status'    => $param['activation_status'] ?? '',
        ];
        $where  = ToolUtil::dealNull($where);
        
        $column = ['*'];
        $counts = LiveVipActivationCode::getActivationCodeList($where)->count();
        $limit  = ceil($counts / 1000);
        // 打开PHP文件句柄,php://output 表示直接输出到浏览器 
        $fp     = fopen('php://output', 'a');
        //添加BOM头,以UTF8编码导出CSV文件,如果文件头未添加BOM头,打开会出现乱码。
        fwrite($fp, chr(0xEF) . chr(0xBB) . chr(0xBF));
        $head   = ['激活码', '生成时间', '激活状态', '激活时间', '激活用户', '激活账号', '激活码VIP等级', '激活渠道'];
        fputcsv($fp, $head);
        $i      = 1;
        $n      = 1;
        while ($n <= $limit) {
            $offset = ($n - 1) * 1000;
            $items  = LiveVipActivationCode::getActivationCodeList($where, $column)->offset($offset)->limit(1000)->get()->toArray();
            foreach ($items as $key => $val) {
                $val['vac_status']          = static::ACT_STATUS[$val['vac_status']] ?? '无';
                $val['vac_vip_level']       = static::VIP_LEVEL[$val['vac_vip_level']] ?? '无';
                $val['vac_activation_time'] = empty($val['vac_activation_time']) ? '无' : $val['vac_activation_time'];
                $val['u_nickname']          = empty($val['u_nickname']) ? '无' : $val['u_nickname'];
                $val['u_phone']             = empty($val['u_phone']) ? '无' : $val['u_phone'];
                fputcsv($fp, $val);
                $i++;
            }
            if ($i > 20000) { 
                //读取一部分数据刷新下输出buffer 
                ob_flush();
                flush();
                $i = 0;
            }
            unset($items);
            $n++;
        }
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值