浅析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安全配置
Dec 06 PHP
php查找任何页面上的所有链接的方法
Dec 03 PHP
ThinkPHP模版中导入CSS和JS文件的方法
Nov 29 PHP
PHP遍历数组的方法汇总
Apr 30 PHP
PHP实现简单数字分页效果
Jul 26 PHP
php验证码实现代码(3种)
Sep 07 PHP
必须收藏的23个php实用代码片段
Feb 02 PHP
php页面跳转session cookie丢失导致不能登录等问题的解决方法
Dec 12 PHP
php实现基于pdo的事务处理方法示例
Jul 21 PHP
php简单读取.vcf格式文件的方法示例
Sep 02 PHP
PHP 中 var_export、print_r、var_dump 调试中的区别
Jun 19 PHP
浅谈laravel-admin的sortable和orderby使用问题
Oct 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
受疫情影响 动画《Re从零开始的异世界生活》第二季延期至7月
2020/03/10 日漫
PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
2011/11/10 PHP
PHP微信公众号开发之微信红包实现方法分析
2017/07/14 PHP
小试JQuery的AutoComplete插件
2011/05/04 Javascript
表头固定(利用jquery实现原理介绍)
2012/11/08 Javascript
浅谈Javascript 执行顺序
2013/12/18 Javascript
jQuery获取当前对象标签名称的方法
2014/02/07 Javascript
JavaScript简单表格编辑功能实现方法
2015/04/16 Javascript
Javascript函数式编程语言
2015/10/11 Javascript
基于js实现微信发送好友如何分享到朋友圈、微博
2015/11/30 Javascript
浅谈Jquery中Ajax异步请求中的async参数的作用
2016/06/06 Javascript
axios学习教程全攻略
2017/03/26 Javascript
JavaScript使用readAsDataURL读取图像文件
2017/05/10 Javascript
vue高德地图之玩转周边
2017/06/16 Javascript
微信小程序实现添加手机联系人功能示例
2017/11/30 Javascript
Vue中computed、methods与watch的区别总结
2019/04/10 Javascript
微信小程序扫描二维码获取信息实例详解
2019/05/07 Javascript
element-ui如何防止重复提交的方法步骤
2019/12/09 Javascript
js正则表达式简单校验方法
2021/01/03 Javascript
[01:05:40]VG vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[57:09]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第一场 1月26日
2021/03/11 DOTA
Python通过OpenCV的findContours获取轮廓并切割实例
2018/01/05 Python
python pyheatmap包绘制热力图
2018/11/09 Python
Python3 读取Word文件方式
2020/02/13 Python
Python开发之身份证验证库id_validator验证身份证号合法性及根据身份证号返回住址年龄等信息
2020/03/20 Python
100%植物性、有机、即食餐:Sakara Life
2018/10/25 全球购物
PHP如何防止SQL注入
2014/05/03 面试题
P/Invoke是什么
2015/07/31 面试题
初中三年学生的学习自我评价
2013/11/13 职场文书
《红军不怕远征难》教学反思
2014/04/14 职场文书
入党积极分子自我批评思想汇报
2014/10/10 职场文书
化工见习报告范文
2014/10/31 职场文书
2015年学校精神文明工作总结
2015/05/27 职场文书
《孙子兵法》:欲成大事者,需读懂这些致胜策略
2019/08/23 职场文书
Python中for后接else的语法使用
2021/05/18 Python
Nginx 反向代理解决跨域问题多种情况分析
2022/01/18 Servers