PHP資料匯出知識點詳解

來源:互聯網
上載者:User
最近在做後台管理的項目,後台通常有資料匯出到 excel 的需要,經過之前搜尋通常推薦使用的是 php excel ,我經常使用的是 laravel ,對於 php excel 也有很好用的對應 package。

開始使用是非常好用的,但是當需要匯出的資料達到上萬條時就直接帶來記憶體不足的問題。

然後我找到了幾個解決方案。

前端解決方案

PHP配合SheetJS/js-xlsx匯出Excel大量資料

這個方案好處的不需要額外的介面,但是要依賴於前端開發人員。

匯出成 csv

該方案速度較快,完全後端實現,缺點是 csv 格式對匯出的形式要求比較高,要求是純資料,不能存在圖片之類的富文本形式。

下面主要介紹一下匯出 csv 的方式

php 官方文檔 的介紹


<?php$list = array (  array('aaa', 'bbb', 'ccc', 'dddd'),  array('123', '456', '789'),  array('"aaa"', '"bbb"'));$fp = fopen('file.csv', 'w');foreach ($list as $fields) {  fputcsv($fp, $fields);}fclose($fp);?>

匯出完整例子


<?php$name = 'test';header ( "Content-type:application/vnd.ms-excel" );header ( "Content-Disposition:filename=".$name.".csv" );header ('Cache-Control: max-age=0');//開啟PHP檔案控制代碼,php://output 表示直接輸出到瀏覽器$fp = fopen('php://output', 'a');  // 寫入BOM頭,防止亂碼fwrite($fp, chr(0xEF).chr(0xBB).chr(0xBF)); // 產生的測試資料function test(){  for ($i=0; $i < 150000; $i++) {    yield ['name', $i, '男'];  }}// 表頭$headers = ['名字', '年齡', '性別'];fputcsv($fp, $headers);foreach (test() as $value) {  fputcsv($fp, $value);}fclose($fp);?>

在 laravel 中配合 chunk 使用可以方便快速匯出全部資料。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.