码迷,mamicode.com
首页 > Web开发 > 详细

php Excel 导出大批量数据解决方案

时间:2019-10-10 11:03:17      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:csv文件   check   open   解决   pos   osi   set   cache   fputc   

1,通过PHP输出流方式导出
php://output是一个可写的输出流,允许程序像操作文件一样将输出写入到输出流中,PHP会把输出流中的内容发送给web服务器并返回给发起请求的浏览器 保存为csv文件
2, 刷新一下输出buffer,防止由于数据过多造成问题 ;
ob_flush();  flush();配合使用
3,实现代码
/**
 * 导出CSV
 * @param        $rows
 * @param string $file_name
 */
function exportCsv($rows, $file_name = ‘数据‘)
{
    $filename =  $file_name. date(‘YmdHi‘) . ‘.csv‘; //设置文件名
    header("Content-type:text/csv");
    header("Content-Disposition:attachment;filename=\"" . $filename . "\"");
    header(‘Cache-Control:must-revalidate,post-check=0,pre-check=0‘);
    header(‘Expires:0‘);
    header(‘Pragma:public‘);

    $fp    = fopen(‘php://output‘, ‘a‘);
    $cnt   = 0; // 计数器
    $limit = 5000; // 每隔$limit行,刷新输出buffer

    //加上bomtou utf-8正常显示,但编辑之后会有问题,要另存为xls、xlsb、xlsx等格式
    fwrite($fp, "\xEF\xBB\xBF");

    foreach ($rows as $row) {
        $cnt++;
        if ($limit == $cnt) { //刷新输出buffer,防止由于数据过多造成问题
            ob_flush();
            flush();
            $cnt = 0;
        }
        fputcsv($fp, $row);
        unset($v);
        unset($row);
    }
}

 

php Excel 导出大批量数据解决方案

标签:csv文件   check   open   解决   pos   osi   set   cache   fputc   

原文地址:https://www.cnblogs.com/weedsyl/p/11646144.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!