PHP 导出6w以下数据

原文链接

至于什么格式自己命名标头和 文件后缀名即可

简化代码如下

$str = "<html xmlns:o=\"urn:schemas-microsoft-com:office:office\"\r\nxmlns:x=\"urn:schemas-microsoft-com:office:excel\"\r\nxmlns=\"http://www.w3.org/TR/REC-html40\">\r\n<head>\r\n<meta http-equiv=Content-Type content=\"text/html; charset=utf-8\">\r\n</head>\r\n<body>";
        $str .= "<table border=1>";
//    $str.="<head style='text-align:center;'><h2>曾经沧海难为水,除去巫山不是云</h2></head>";
        $datas = [];
        $datas[] = ['订单号', '卡种名称', '面值', '卡种分类', '卡号', '卡密', '状态', '提交时间', '用户ID', '操作记录'];
        foreach ($datas as $key => $rt) {
            $str .= "<tr>";
            foreach ($rt as $k => $v) {
                $str .= "<td>{$v}</td>";
            }
            $str .= "</tr>\n";
        }
//        $file_name = 'excelData.html';
//        $pub->written_file($str, 'excelData.html');
        //分段数据量
        $num = 10000;
        //友好输出excel
        $filename = date('YmdHis') . 'data.xls';
        header("Content-Type: application/vnd.ms-excel; name='excel'");
        header("Content-type: application/octet-stream");
        header("Content-Disposition: attachment; filename=" . $filename);
        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
        header("Pragma: no-cache");
        header("Expires: 0");
        echo $str;
        //刷新输出缓冲到浏览器
        ob_flush();
        //必须同时使用 ob_flush() 和flush() 函数来刷新输出缓冲。
        flush();
        for ($s_num = 0; $s_num < $count; $s_num+=$num) {
            //分段 -- 写入文件
            //查找数据
            //根据条件搜索   
            $sql = "" . " LIMIT " . $s_num . "," . $num;
            $data = $mod->query($sql);
            $datas = [];
            if (!empty($data)) {
                foreach ($data as $val) {
                    $datas[] = [$val[''], $val[''], $val[''], $val[''],
                        '卡号: ' . $val[''], '卡密: ' . $val[''], $val['']
                        , date('Y-m-d H:i:s', $val['']), $val[''], $val['']
                    ];
                }
            }
            $str = '';
            foreach ($datas as $key => $rt) {
                $str .= "<tr>";
                foreach ($rt as $k => $v) {
                    $str .= "<td>{$v}</td>";
                }
                $str .= "</tr>\n";
            }

            echo $str;
            ob_flush();
            flush();
        }
        $str = "</table></body></html>";
        echo $str;
        ob_flush();
        flush();
        die;

测试可用

遇到个问题,只存在65510行

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值