浅析PHP数据导出知识点


Posted in PHP onFebruary 17, 2018

最近在做后台管理的项目,后台通常有数据导出到 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 使用可以方便快速导出全部数据。

以上就是本次知识点的全部内容,感谢大家对三水点靠木的支持。

PHP 相关文章推荐
模拟OICQ的实现思路和核心程序(二)
Oct 09 PHP
PHP学习之PHP运算符
Oct 09 PHP
解析PayPal支付接口的PHP开发方式
Nov 28 PHP
PHP调用C#开发的dll类库方法
Jul 28 PHP
php安装swoole扩展的方法
Mar 19 PHP
最新最全PHP生成制作验证码代码详解(推荐)
Jun 12 PHP
[原创]php使用curl判断网页404(不存在)的方法
Jun 23 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
Jul 07 PHP
PHP获取用户客户端真实IP的解决方案
Oct 10 PHP
PHP文件操作实例总结【文件上传、下载、分页】
Dec 08 PHP
PHP7.3.10编译安装教程
Oct 08 PHP
PHP强制转化的形式整理
May 22 PHP
PHP 应用容器化以及部署方法
Feb 12 #PHP
PHP使用Redis长连接的方法详解
Feb 12 #PHP
PHP长连接实现与使用方法详解
Feb 11 #PHP
搜索附近的人PHP实现代码
Feb 11 #PHP
PHP的RSA加密解密方法以及开发接口使用
Feb 11 #PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
Feb 11 #PHP
PHP实现的多维数组排序算法分析
Feb 10 #PHP
You might like
咖啡因含量是由谁决定的?低因咖啡怎么来?低因咖啡适合什么人喝
2021/03/06 新手入门
php公用函数列表[正则]
2007/02/22 PHP
PHP curl模拟浏览器采集阿里巴巴的实现代码
2011/04/20 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
js实现的类似于asp数据字典的数据类型代码实例
2014/09/03 Javascript
利用JQuery实现datatables插件的增加和删除行功能
2017/01/06 Javascript
JavaScript和jQuery制作光棒效果
2017/02/24 Javascript
详解微信开发中snsapi_base和snsapi_userinfo及静默授权的实现
2017/03/11 Javascript
JScript实现地址选择功能
2017/08/15 Javascript
基于JavaScript实现评论框展开和隐藏功能
2017/08/25 Javascript
分享vue里swiper的一些坑
2018/08/30 Javascript
详解关于vue2.0工程发布上线操作步骤
2018/09/27 Javascript
vue cli 3.0 搭建项目的图文教程
2019/05/17 Javascript
Node.js+Vue脚手架环境搭建的方法步骤
2020/03/08 Javascript
浅谈Python中函数的定义及其调用方法
2019/07/19 Python
python傅里叶变换FFT绘制频谱图
2019/07/19 Python
Python Django 实现简单注册功能过程详解
2019/07/29 Python
Python 异步协程函数原理及实例详解
2019/11/13 Python
django序列化时使用外键的真实值操作
2020/07/15 Python
Python3中小括号()、中括号[]、花括号{}的区别详解
2020/11/15 Python
图解CSS3制作圆环形进度条的实例教程
2016/05/26 HTML / CSS
纯CSS3实现漂亮的input输入框动画样式库(Text input love)
2018/12/29 HTML / CSS
HTML5实践-图片设置成灰度图
2012/11/12 HTML / CSS
WoolOvers澳洲官方网站:英国针织服装公司
2018/05/13 全球购物
捷克家电和家具购物网站:OKAY.cz
2020/07/23 全球购物
综合办公室主任职责
2013/12/16 职场文书
司法局火灾防控方案
2014/06/05 职场文书
小学教师师德师风演讲稿
2014/08/22 职场文书
国家助学金感谢信
2015/01/21 职场文书
试用期旷工辞退通知书
2015/04/17 职场文书
秋季运动会加油词
2015/07/18 职场文书
2015年政治教研组工作总结
2015/07/22 职场文书
幼儿园心得体会范文
2016/01/21 职场文书
使用Pytorch实现two-head(多输出)模型的操作
2021/05/28 Python
Python之基础函数案例详解
2021/08/30 Python
vue组件冲突之引用另一个组件出现组件不显示的问题
2022/04/13 Vue.js