浅析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 攻击方法之谈php+mysql注射语句构造
Oct 30 PHP
php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
May 16 PHP
php 代码优化之经典示例
Mar 24 PHP
php中批量删除Mysql中相同前缀的数据表的代码
Jul 01 PHP
php抓取页面的几种方法详解
Jun 17 PHP
如何用PHP来实现一个动态Web服务器
Jul 29 PHP
php基于jquery的ajax技术传递json数据简单实例
Apr 15 PHP
提交表单后 PHP获取提交内容的实现方法
May 25 PHP
PHP 二级子目录(后台目录)设置二级域名
Mar 02 PHP
PHP数据分析引擎计算余弦相似度算法示例
Aug 08 PHP
关于ThinkPHP中的异常处理详解
May 11 PHP
详解Laravel服务容器的优势
May 29 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 将bmp图片转为jpg等其他任意格式的图片
2009/06/21 PHP
php性能优化分析工具XDebug 大型网站调试工具
2011/05/22 PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
2013/12/03 PHP
PHP生成等比缩略图类和自定义函数分享
2014/06/25 PHP
php操作xml入门之xml基本介绍及xml标签元素
2015/01/23 PHP
php操作(删除,提取,增加)zip文件方法详解
2015/03/12 PHP
php获取当前url地址的方法小结
2017/01/10 PHP
Javascript模板技术
2007/04/27 Javascript
使用Microsoft Ajax Minifier减小JavaScript文件大小的方法
2010/04/01 Javascript
javascript获取select的当前值示例代码(兼容IE/Firefox/Opera/Chrome)
2013/12/17 Javascript
js加入收藏夹代码(兼容ie/ff/op)
2014/05/16 Javascript
js获取checkbox复选框选中的选项实例
2014/08/24 Javascript
JavaScript jquery及AJAX小结
2016/01/24 Javascript
jQuery实现的网格线绘制方法
2016/06/20 Javascript
Bootstrap轮播插件简单使用方法介绍
2016/06/21 Javascript
基于Bootstrap实现的下拉菜单手机端不能选择菜单项的原因附解决办法
2016/07/22 Javascript
webpack构建换肤功能的思路详解
2017/11/27 Javascript
解决vue的变量在settimeout内部效果失效的问题
2018/08/30 Javascript
angular6 利用 ngContentOutlet 实现组件位置交换(重排)
2018/11/02 Javascript
javascript触发模拟鼠标点击事件
2019/06/26 Javascript
layui-select动态选中值的例子
2019/09/23 Javascript
wxPython事件驱动实例详解
2014/09/28 Python
Python基于回溯法子集树模板解决找零问题示例
2017/09/11 Python
Python实现统计给定字符串中重复模式最高子串功能示例
2018/05/16 Python
django之静态文件 django 2.0 在网页中显示图片的例子
2019/07/28 Python
python手写均值滤波
2020/02/19 Python
H5调用相机拍照并压缩图片的实例代码
2017/07/20 HTML / CSS
Vision Direct比利时:在线订购隐形眼镜
2019/08/27 全球购物
德国珠宝和配件商店:Styleserver
2021/02/23 全球购物
资料员岗位职责
2013/11/17 职场文书
初三学生个人自我评定
2014/04/06 职场文书
《大江保卫战》教学反思
2014/04/11 职场文书
小学运动会报道稿
2014/10/04 职场文书
2014标准社保办理委托书
2014/10/06 职场文书
股东合作协议书模板2篇
2019/11/05 职场文书
win10输入法不见了只能打出字母怎么解决?
2022/08/05 数码科技