浅析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 相关文章推荐
memcache命令启动参数中文解释
Jan 13 PHP
php实现12306余票查询、价格查询示例
Apr 17 PHP
PHP函数extension_loaded()用法实例
Jan 19 PHP
PHP通过API获取手机号码归属地
May 28 PHP
分享PHP函数实现数字与文字分页代码
Jul 28 PHP
PHP中的表达式简述
May 29 PHP
PHP使用DOM和simplexml读取xml文档的方法示例
Feb 08 PHP
PHP JWT初识及其简单示例
Oct 10 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
Aug 03 PHP
php数组函数array_push()、array_pop()及array_shift()简单用法示例
Jan 26 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
Jan 26 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
PHP网站基础优化方法小结
2008/09/29 PHP
php cookie的操作实现代码(登录)
2010/12/29 PHP
javascript 哈希表(hashtable)的简单实现
2010/01/20 Javascript
学习面向对象之面向对象的术语
2010/11/30 Javascript
浏览器解析js生成的html出现样式问题的解决方法
2012/04/16 Javascript
jQuery根据纬度经度查看地图处理程序
2013/05/08 Javascript
Jquery on绑定的事件 触发多次实例代码
2016/12/08 Javascript
JavaScript简单验证表单空值及邮箱格式的方法
2017/01/20 Javascript
javascript 中的继承实例详解
2017/05/05 Javascript
js表单序列化判断空值的实例
2017/09/22 Javascript
JavaScript多态与封装实例分析
2018/07/27 Javascript
select2 ajax 设置默认值,初始值的方法
2018/08/09 Javascript
vue项目中使用tinymce编辑器的步骤详解
2018/09/11 Javascript
微信小程序 wepy框架与iview-weapp的用法详解
2019/04/10 Javascript
vue 表单之通过v-model绑定单选按钮radio
2019/05/13 Javascript
使用ThinkJs搭建微信中控服务的实现方法
2019/08/08 Javascript
javascript实现移动端红包雨页面
2020/06/23 Javascript
JavaScript中如何调用Java方法
2020/09/16 Javascript
解决vuex改变了state的值,但是页面没有更新的问题
2020/11/12 Javascript
[03:02]安得倚天剑,跨海斩长鲸——中国军团出征DOTA2国际邀请赛
2018/08/14 DOTA
详解在Python程序中自定义异常的方法
2015/10/16 Python
python对象及面向对象技术详解
2016/07/19 Python
Python设计模式之工厂模式简单示例
2018/01/09 Python
关于python下cv.waitKey无响应的原因及解决方法
2019/01/10 Python
python找出一个列表中相同元素的多个索引实例
2019/06/11 Python
Python实现点云投影到平面显示
2020/01/18 Python
python之生成多层json结构的实现
2020/02/27 Python
Python远程方法调用实现过程解析
2020/07/28 Python
大一自我鉴定范文
2013/10/04 职场文书
怎样写留学自荐信
2013/11/11 职场文书
违反校纪校规检讨书
2014/02/15 职场文书
航海技术专业毕业生求职信
2014/04/06 职场文书
暗恋桃花源观后感
2015/06/12 职场文书
文艺有韵味的诗句(生命类、亲情类...)
2019/07/11 职场文书
话题作文之呼唤
2019/12/18 职场文书
FP-growth算法发现频繁项集——发现频繁项集
2021/06/24 Python