浅析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 相关文章推荐
php实现mysql封装类示例
May 07 PHP
php实现的替换敏感字符串类实例
Sep 22 PHP
php5.3提示Function ereg() is deprecated Error问题解决方法
Nov 12 PHP
php检测文本的编码
Jul 26 PHP
隐藏Nginx或Apache以及PHP的版本号的方法
Jan 03 PHP
PHP Ajax实现无刷新附件上传
Aug 17 PHP
Linux系统中为php添加pcntl扩展
Aug 28 PHP
php传值方式和ajax的验证功能
Mar 27 PHP
PHP通过文件路径获取文件名的实例代码
Oct 14 PHP
php中isset与empty函数的困惑与用法分析
Jul 05 PHP
php 使用mpdf实现指定字段配置字体样式的方法
Jul 29 PHP
如何在Laravel5.8中正确地应用Repository设计模式
Nov 26 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
php学习之流程控制实现代码
2011/06/09 PHP
PHP重定向的3种方式
2013/03/07 PHP
PHP unset函数原理及使用方法解析
2020/08/14 PHP
this[] 指的是什么内容 讨论
2007/03/24 Javascript
解决extjs在firefox中关闭窗口再打开后iframe中js函数访问不到的问题
2008/11/06 Javascript
javascript实现div的显示和隐藏的小例子
2013/06/25 Javascript
最好用的省市二级联动 原生js实现你值得拥有
2013/09/22 Javascript
jquery弹窗插件colorbox绑定动态生成元素的方法
2014/06/20 Javascript
jQuery循环动画与获取组件尺寸的方法
2015/02/02 Javascript
基于javascript实现图片预加载
2016/01/05 Javascript
JavaScript焦点事件、鼠标事件和滚轮事件使用详解
2016/01/15 Javascript
js获取json中key所对应的value值的简单方法
2020/06/17 Javascript
JS+DIV实现的卷帘效果示例
2017/03/22 Javascript
Node.js+Express+MySql实现用户登录注册功能
2017/07/10 Javascript
js 只比较时间大小的实例
2017/10/26 Javascript
vue el-tree 默认展开第一个节点的实现代码
2020/05/15 Javascript
Vue中keep-alive的两种应用方式
2020/07/15 Javascript
js删除对象中的某一个字段的方法实现
2021/01/11 Javascript
[01:56]无止竞 再出发——中国军团出征2017年DOTA2国际邀请赛
2017/07/05 DOTA
Python进行数据科学工作的简单入门教程
2015/04/01 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
2017/09/26 Python
Python 判断 有向图 是否有环的实例讲解
2018/02/01 Python
python list删除元素时要注意的坑点分享
2018/04/18 Python
pyqt5 实现工具栏文字图片同时显示
2019/06/13 Python
解决python super()调用多重继承函数的问题
2019/06/26 Python
pytorch使用 to 进行类型转换方式
2020/01/08 Python
Windows+Anaconda3+PyTorch+PyCharm的安装教程图文详解
2020/04/03 Python
详解用 python-docx 创建浮动图片
2021/01/24 Python
财务管理个人自荐书范文
2013/11/24 职场文书
文明学生标兵事迹
2014/01/21 职场文书
优秀教师工作感言
2014/02/16 职场文书
《谁的本领大》教后反思
2014/04/25 职场文书
供应链金融服务方案
2014/05/25 职场文书
司法局群众路线教育实践活动整改措施
2014/09/17 职场文书
哈姆雷特读书笔记
2015/06/29 职场文书
浅谈MySQL中的六种日志
2022/03/23 MySQL