当前位置 : 主页 > 网络编程 > PHP >

thinkphp3.2数据导出

来源:互联网 收集:自由互联 发布时间:2021-06-28
thinkphp3.2数据导出,亲测导出8W条数据没有任何问题 /** * 订单导出 * @param $where */ function export($where) { $f_name = "全部订单"; //列名称 $title = array('序号', '奖品名称', '手机号', '验证状态',
thinkphp3.2数据导出,亲测导出8W条数据没有任何问题
/**
     * 订单导出
     * @param $where
     */
    function export($where)
    {
        $f_name = "全部订单";
        //列名称
        $title =  array('序号',
            '奖品名称',
            '手机号',
            '验证状态',
            '验证时间',
            '抽奖时间'
        );
        $fileName = $f_name . date('_YmdHis');//文件名称

        header('Content-Type: application/vnd.ms-excel');
        header('Content-Disposition: attachment;filename="' . $fileName . '.csv"');
        header('Cache-Control: max-age=0');
        header('Cache-Control: max-age=1');
        header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
        header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified
        header('Cache-Control: cache, must-revalidate'); // HTTP/1.1
        header('Pragma: public'); // HTTP/1.0

        ob_flush();
        flush();
        $order = M("Order");
        $f = "title,mobile,status,api_time,add_time";//尽量只取需要的字段,不要取出全部
        $o = 'id desc';
        //分页查
        $total_count = M('order')->where($where)->count();
        $num_page = 5000;
        $page = ceil($total_count / $num_page);
        //创建临时存储内存
        $fp = fopen('php://memory', 'w');
        //商品只有6个 所以全部取出
        $order_type = M("Goods")->getField("type,title", true);
        fputcsv($fp, $title, ',');
        $i =1;
        for ($j = 0; $j < $page; $j++) {

            $num = $num_page * $j;

            $limit = $num . ',' . $num_page;
            $data = $order->field($f)->where($where)->order($o)->limit($limit)->select();
            foreach ($data as $item) {
                $title = $order_type[$item['title']];

                $xlsData = array($i,
                    $title,
                    "\t" . $item['mobile'],
                    $item['status'] ? '已验证' : '未验证',
                    "\t" . $item['api_time'],
                    "\t" . $item['add_time']
                );
                fputcsv($fp, $xlsData, ',');
                $i++;
            }
            
        }
        rewind($fp);
        $content = "";
        while (!feof($fp)) {
            $content .= fread($fp, 1024);
        }

        fclose($fp);
        $content = iconv('utf-8', 'gbk', $content);//转成gbk,否则excel打开乱码
        echo $content;
        exit;
    }
网友评论