浅析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 快速生成 Flash 动画的方法
Mar 06 PHP
深入php socket的讲解与实例分析
Jun 13 PHP
使用PHP备份MySQL和网站发送到邮箱实例代码
Nov 28 PHP
ThinkPHP3.1的Widget新用法
Jun 19 PHP
在PHP中使用FastCGI解析漏洞及修复方案
Nov 10 PHP
PHP递归获取目录内所有文件的实现方法
Nov 01 PHP
php的laravel框架快速集成微信登录的方法
Dec 12 PHP
PHP编程实现微信企业向用户付款的方法示例
Jul 26 PHP
thinkPHP5分页功能实现方法分析
Oct 25 PHP
PHP延迟静态绑定的深入讲解
Apr 02 PHP
php+Ajax无刷新验证用户名操作实例详解
Mar 04 PHP
ThinkPHP框架结合Ajax实现用户名校验功能示例
Jul 03 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
PHP6 先修班 JSON实例代码
2008/08/23 PHP
在VS2008中编译MYSQL5.1.48的方法
2010/07/03 PHP
几款免费开源的不用数据库的php的cms
2010/12/19 PHP
PHP消息队列用法实例分析
2016/02/12 PHP
PHP多维数组指定多字段排序的示例代码
2018/05/16 PHP
javscript对象原型的一些看法
2010/09/19 Javascript
jQuery阻止冒泡和HTML默认操作
2010/11/17 Javascript
基于jQuery架构javascript基础体系
2011/01/01 Javascript
jQuery获取样式中的背景颜色属性值/颜色值
2012/12/17 Javascript
jquery实现模拟百分比进度条渐变效果代码
2015/10/29 Javascript
Angularjs---项目搭建图文教程
2016/07/08 Javascript
JavaScript正则表达式实例详解
2016/10/16 Javascript
JS对大量数据进行多重过滤的方法
2016/11/04 Javascript
js中的eval()函数把含有转义字符的字符串转换成Object对象的方法
2016/12/02 Javascript
js 简易版滚动条实例(适用于移动端H5开发)
2017/06/26 Javascript
jquery 键盘事件的使用方法详解
2017/09/13 jQuery
vuedraggable+element ui实现页面控件拖拽排序效果
2020/07/29 Javascript
微信小程序实现禁止分享代码实例
2019/10/19 Javascript
vue遍历对象中的数组取值示例
2019/11/07 Javascript
js实现星星海特效的示例
2020/09/28 Javascript
[13:56]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第一场
2018/04/06 DOTA
[41:41]TFT vs Secret Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
Python 类与元类的深度挖掘 I【经验】
2016/05/06 Python
Python利用ElementTree模块处理XML的方法详解
2017/08/31 Python
python+VTK环境搭建及第一个简单程序代码
2017/12/13 Python
在CentOS6上安装Python2.7的解决方法
2018/01/09 Python
Python操作qml对象过程详解
2019/09/26 Python
python程序文件扩展名知识点详解
2020/02/27 Python
Python Django路径配置实现过程解析
2020/11/05 Python
python实现MySQL指定表增量同步数据到clickhouse的脚本
2021/02/26 Python
CSS3自定义滚动条样式的示例代码
2017/08/21 HTML / CSS
HTML5 video标签(播放器)学习笔记(一):使用入门
2015/04/24 HTML / CSS
巴西最大的玩具连锁店:Ri Happy
2020/06/17 全球购物
设计专业毕业生求职信
2014/06/25 职场文书
会计人员演讲稿
2014/09/11 职场文书
导游词之广西漓江
2019/11/02 职场文书