浅析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数据库操作分页类
Jun 04 PHP
Blitz templates 最快的PHP模板引擎
Apr 06 PHP
php下清空字符串中的HTML标签的代码
Sep 06 PHP
数据库中排序的对比及使用条件详解
Feb 23 PHP
单一index.php实现PHP任意层级文件夹遍历(Zjmainstay原创)
Jul 31 PHP
浅谈PHP的反射机制
Dec 15 PHP
PHP自定义函数实现数组比较功能示例
Oct 19 PHP
ajax+php实现无刷新验证手机号的实例
Dec 22 PHP
PHP parse_ini_file函数的应用与扩展操作示例
Jan 07 PHP
PHP实现文字写入图片功能
Feb 18 PHP
PHP压缩图片功能的介绍
Mar 21 PHP
PHP快速导出百万级数据到CSV或者EXCEL文件
Nov 27 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实现数字补零功能的2个函数介绍
2014/05/12 PHP
php使用post数组的键值创建同名变量并赋值的方法
2015/04/03 PHP
PHP的自定义模板引擎
2017/03/24 PHP
php原生数据库分页的代码实例
2019/02/18 PHP
javascript URL锚点取值方法
2009/02/25 Javascript
javascript的propertyIsEnumerable()方法使用介绍
2014/04/09 Javascript
JQuery给元素绑定click事件多次执行的解决方法
2014/05/29 Javascript
jQuery学习总结之jQuery事件
2014/06/30 Javascript
Nodejs初级阶段之express
2015/11/23 NodeJs
jQuery+CSS实现滑动的标签分栏切换效果
2015/12/17 Javascript
Vuejs实现带样式的单文件组件新方法
2017/05/02 Javascript
使用vue.js在页面内组件监听scroll事件的方法
2018/09/11 Javascript
vue 解决路由只变化参数页面组件不更新问题
2019/11/05 Javascript
详解小程序横屏方案对比
2020/06/28 Javascript
使用 Github Actions 自动部署 Angular 应用到 Github Pages的方法
2020/07/20 Javascript
[59:30]VG vs LGD 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.22
2019/09/05 DOTA
[02:03]风行者至宝清风环佩外观展示
2020/09/05 DOTA
Python实现将文本生成二维码的方法示例
2017/07/18 Python
Python编写通讯录通过数据库存储实现模糊查询功能
2019/07/18 Python
python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例
2020/02/26 Python
使用tensorflow框架在Colab上跑通猫狗识别代码
2020/04/26 Python
简单了解Java Netty Reactor三种线程模型
2020/04/26 Python
Python小白垃圾回收机制入门
2020/06/09 Python
Python SMTP配置参数并发送邮件
2020/06/16 Python
python speech模块的使用方法
2020/09/09 Python
Python基于staticmethod装饰器标示静态方法
2020/10/17 Python
基于HTML5 FileSystem API的使用介绍
2013/04/24 HTML / CSS
澳大利亚家具和家居用品在线商店:Interiors Online
2018/03/05 全球购物
手工制作的男士奢华英国鞋和服装之家:Goodwin Smith
2019/06/21 全球购物
机电一体化专业应届本科生求职信
2013/09/27 职场文书
高三高考决心书
2014/03/11 职场文书
多媒体教室标语
2014/06/26 职场文书
学校安全生产月活动总结
2014/07/05 职场文书
教师节感谢信
2015/01/22 职场文书
雷峰塔导游词
2015/02/09 职场文书
Python制作一个随机抽奖小工具的实现
2021/07/07 Python