php Excel 導出大批量數據解決方案


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);
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM