PHP导出大量数据到Excel

2020-06-20  本文已影响0人  向南路人
    /**
     * 迭代器
     * Db类中的方法
     * @param string $sql
     * @return Generator
     */
    public function query_use_result(string $sql)
    {
        $conn = $this->getConnection();
        foreach ($conn->query($sql,MYSQLI_USE_RESULT) as $row )
        {
            yield $row;
        }
    }

    /**
     * 导出数据到Excel
     * @param string $sql
     */
    function output2excel(string $sql)
    {
        $filename = "订单";//文件名
        set_time_limit(0);//不限制超时时间
        header('Content-Type: application/vnd.ms-excel;charset=utf-8');
        header('Content-Disposition: attachment;filename="' .$filename. '.csv"');
        header('Cache-Control: max-age=0');

        $fp = fopen('php://output', 'a');
        fwrite($fp, chr(0xEF).chr(0xBB).chr(0xBF));//转码,防止乱码
        
        foreach ( Db::Get()->query_use_result($sql) as $row )
        {
            //此处可以各种组装数据
            fputcsv($fp, $row);//逐行写入csv文件
        }
        fclose($fp);//每生成一个文件关闭
    }

    $sql = "select * from order";
    output2excel($sql);
上一篇 下一篇

猜你喜欢

热点阅读