浅析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 相关文章推荐
图形数字验证代码
Oct 09 PHP
php获得当前的脚本网址
Dec 10 PHP
php xfocus防注入资料
Apr 27 PHP
PHP中文件缓存转内存缓存的方法
Dec 06 PHP
解析在zend Farmework下如何创立一个FORM表单
Jun 28 PHP
php中sprintf与printf函数用法区别解析
Feb 17 PHP
MyEclipse常用配置图文教程
Sep 11 PHP
PHP产生不重复随机数的5个方法总结
Nov 12 PHP
ThinkPHP实现ajax仿官网搜索功能实例
Dec 02 PHP
PHP中实现获取IP和地理位置类分享
Feb 10 PHP
PHP session文件独占锁引起阻塞问题解决方法
May 12 PHP
php基于websocket搭建简易聊天室实践
Oct 24 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下通过POST还是GET来传值
2008/06/05 PHP
php中的四舍五入函数代码(floor函数、ceil函数、round与intval)
2014/07/14 PHP
PHP变量的作用范围实例讲解
2020/12/22 PHP
tbody元素支持嵌套的注意方法
2007/03/24 Javascript
15个jquery常用方法、小技巧分享
2015/01/13 Javascript
javascript中几个容易混淆的概念总结
2015/04/14 Javascript
JavaScript如何动态创建table表格
2020/08/02 Javascript
jquery实现加载进度条提示效果
2015/11/23 Javascript
jQuery代码实现表格中点击相应行变色功能
2016/05/09 Javascript
jQuery使用EasyUi实现三级联动下拉框效果
2017/03/08 Javascript
Vuex简单入门
2017/04/19 Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
2017/04/20 jQuery
本地存储localStorage用法详解
2017/07/31 Javascript
浅析从vue源码看观察者模式
2018/01/29 Javascript
浅谈angular4.0中路由传递参数、获取参数最nice的写法
2018/03/12 Javascript
express+vue+mongodb+session 实现注册登录功能
2018/12/06 Javascript
详解用场景去理解函数柯里化(入门篇)
2019/04/11 Javascript
小程序云开发教程如何使用云函数实现点赞功能
2019/05/18 Javascript
微信小程序实现收货地址左滑删除
2020/11/18 Javascript
Vue实现返回顶部按钮实例代码
2020/10/21 Javascript
JavaScript基于SVG的图片切换效果实例代码
2020/12/15 Javascript
NestJs使用Mongoose对MongoDB操作的方法
2021/02/22 Javascript
Python实现抓取HTML网页并以PDF文件形式保存的方法
2018/05/08 Python
python递归调用中的坑:打印有值, 返回却None
2020/03/16 Python
在python image 中实现安装中文字体
2020/05/16 Python
python 元组的使用方法
2020/06/09 Python
Django --Xadmin 判断登录者身份实例
2020/07/03 Python
PurCotton全棉时代官网:100%天然棉花生产的生活护理用品
2016/11/18 全球购物
Emma Bridgewater官网:英国餐具制造商
2019/11/24 全球购物
飞利浦美国官网:Philips美国
2020/02/28 全球购物
毕业生求职信的经典写法
2014/01/31 职场文书
党员教师四风自我剖析材料
2014/09/30 职场文书
群众路线领导班子整改方案
2014/10/25 职场文书
白酒代理协议书范本
2014/10/26 职场文书
2015年党务公开工作总结
2015/05/19 职场文书
幼儿园庆元旦主持词
2015/07/06 职场文书