使用php实现 csv文件的导出,以及如何封装csv导出类

管理员

若做普通的数据导出功能,建议使用csv导出(fputcsv()函数),fputcsv()函数比PHPexcel要高效的多。
fputcsv() 函数将行格式化为 CSV 并写入一个打开的文件。
该函数返回写入字符串的长度。若出错,则返回 false

测试代码

function test() {
        set_time_limit(0); //防止超时
        header('Content-Type: application/vnd.ms-excel;charset=UTF-8');
        header('Content-Disposition: attachment;filename=' . 'csv导出.csv');
        header('Cache-Control: max-age=0');
        $fp = fopen('php://output', 'a');

        //将数据通过fputcsv写到文件句柄
        fputcsv($fp, utf8_conv_gbk(['姓名', '年龄']));
        
        $limit = 1000;

        for ($i = 0; $i < 2000; $i++) {
            if($i == $limit) {
                //刷新输出缓冲(防止由于数据过多造成问题)
                ob_flush();
                flush();
            }

            //将数据通过fputcsv写到文件句柄
            fputcsv($fp, utf8_conv_gbk(['姓名' . $i, '年龄'.$i]));
        }

        //关闭
        fclose($fp);
    }

封装csv导出类

class Export
{
    protected $fp;

    public function __construct($fileName)
    {
        set_time_limit(0);
        $this->fp = fopen('php://output', 'a');
        $this->header($fileName);
    }
    
    //header
    protected function header($fileName)
    {
        header('Content-Type: application/vnd.ms-excel;charset=UTF-8');
        header('Content-Disposition: attachment;filename=' . $fileName . '.csv');
        header('Cache-Control: max-age=0');
    }

    //将数据通过fputcsv写到文件句柄
    public function put(array $row)
    {
        fputcsv($this->fp, utf8_conv_gbk($row));
    }
    
    //刷新输出缓冲
    public function flush()
    {
        ob_flush();
        flush();
    }

    //关闭
    public function export()
    {
        fclose($this->fp);
    }
}

引用执行

class TestOneExport {
   public function fileExport()
   {
        $csvExport = new CsvExport('test');
        $csvExport->put(['姓名', '年龄']);
        $limit = 1000;
        for ($i = 0; $i < 1000; $i++) {
            if($i == $limit) {
                $csvExport->flush();
            }
            $csvExport->put(['姓名'.$i, '年龄'.$i]);
        }
        $csvExport->export();
    }
}

参考链接:https://www.cnblogs.com/wenzheshen/p/10521400.html

0人点赞
PHP
管理员

全部评论 0

推荐阅读 更多精彩内容