国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表

圖片精選

主站蜘蛛池模板: 靖江市| 顺平县| 和林格尔县| 兰溪市| 南丰县| 大厂| 林甸县| 波密县| 麦盖提县| 肥城市| 偃师市| 达孜县| 彰化市| 秀山| 阳高县| 都兰县| 台前县| 枞阳县| 呼和浩特市| 资中县| 辽源市| 广州市| 明水县| 临桂县| 神木县| 盐亭县| 尖扎县| 达孜县| 五常市| 遂平县| 渝北区| 民乐县| 中阳县| 东宁县| 潞西市| 兴化市| 安乡县| 泾阳县| 金乡县| 丹寨县| 津南区|