国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

淺析PHP數(shù)據(jù)導(dǎo)出知識點

2024-05-05 00:02:25
字體:
供稿:網(wǎng)友

最近在做后臺管理的項目,后臺通常有數(shù)據(jù)導(dǎo)出到 excel 的需要,經(jīng)過之前搜索通常推薦使用的是 php excel ,我經(jīng)常使用的是 laravel ,對于 php excel 也有很好用的對應(yīng) package。

開始使用是非常好用的,但是當(dāng)需要導(dǎo)出的數(shù)據(jù)達(dá)到上萬條時就直接帶來內(nèi)存不足的問題。

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

前端解決方案

PHP配合SheetJS/js-xlsx導(dǎo)出Excel大量數(shù)據(jù)

這個方案好處的不需要額外的接口,但是要依賴于前端開發(fā)者。

導(dǎo)出成 csv

該方案速度較快,完全后端實現(xiàn),缺點是 csv 格式對導(dǎo)出的形式要求比較高,要求是純數(shù)據(jù),不能存在圖片之類的富文本形式。

下面主要介紹一下導(dǎo)出 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);?>

導(dǎo)出完整例子

<?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)); // 生成的測試數(shù)據(jù)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 使用可以方便快速導(dǎo)出全部數(shù)據(jù)。

以上就是本次知識點的全部內(nèi)容,感謝大家對VeVb武林網(wǎng)的支持。


注:相關(guān)教程知識閱讀請移步到PHP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 天津市| 万全县| 临朐县| 北辰区| 绵竹市| 西青区| 西峡县| 通榆县| 双城市| 金川县| 连云港市| 洛川县| 鄂伦春自治旗| 南溪县| 收藏| 塔河县| 通榆县| 杂多县| 南和县| 呼图壁县| 日土县| 祁阳县| 逊克县| 尼玛县| 沾化县| 颍上县| 嘉黎县| 石首市| 道孚县| 堆龙德庆县| 东辽县| 蕲春县| 武冈市| 洪湖市| 芜湖市| 苗栗市| 滨州市| 延川县| 土默特左旗| 正定县| 灌南县|