浅析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 radio 单选框获取与保持值的实现代码
May 15 PHP
PHP网站安装程序制作的原理、步骤、注意事项和示例代码
Aug 01 PHP
慎用preg_replace危险的/e修饰符(一句话后门常用)
Jun 19 PHP
Function eregi is deprecated (解决方法)
Jun 21 PHP
php实现使用正则将文本中的网址转换成链接标签
Dec 03 PHP
php返回相对时间(如:20分钟前,3天前)的方法
Apr 14 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
Aug 01 PHP
PHP array_reduce()函数的应用解析
Oct 28 PHP
ThinkPHP框架实现FTP图片上传功能示例
Apr 08 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
Oct 11 PHP
laravel框架中视图的基本使用方法分析
Nov 23 PHP
php数组函数array_push()、array_pop()及array_shift()简单用法示例
Jan 26 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数组(array)输出的三种形式详解
2013/06/05 PHP
PHP计数器的实现代码
2013/06/08 PHP
php数组编码转换示例详解
2014/03/11 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
Javascript 鼠标移动上去 滑块跟随效果代码分享
2013/11/23 Javascript
JavaScript实现级联菜单的方法
2015/06/29 Javascript
JavaScript函数内部属性和函数方法实例详解
2016/03/17 Javascript
JS+CSS实现闪烁字体效果代码
2016/04/05 Javascript
Javascript之String对象详解
2016/06/08 Javascript
JavaScript实现in-place思想的快速排序方法
2016/08/07 Javascript
原生js实现电商侧边导航效果
2017/01/19 Javascript
使用 jQuery 实现表单验证功能
2017/07/05 jQuery
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
2017/09/02 Javascript
es6系列教程_ Map详解以及常用api介绍
2017/09/25 Javascript
深入浅析ES6 Class 中的 super 关键字
2017/10/20 Javascript
JS中双击和单击事件冲突的解决方法
2018/04/09 Javascript
Javascript之高级数组API的使用实例
2019/03/08 Javascript
如何使用pm2快速将项目部署到远程服务器
2019/03/12 Javascript
es6中new.target的作用和使用场景简单示例分析
2020/03/14 Javascript
微信小程序实现发微博功能的示例代码
2020/06/24 Javascript
[01:12:44]VG vs Mineski Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
Python的Django应用程序解决AJAX跨域访问问题的方法
2016/05/31 Python
Python中不同进制的语法及转换方法分析
2016/07/27 Python
FFT快速傅里叶变换的python实现过程解析
2019/10/21 Python
Python+OpenCV实现实时眼动追踪的示例代码
2019/11/11 Python
python实现拉普拉斯特征图降维示例
2019/11/25 Python
详解Windows下PyCharm安装Numpy包及无法安装问题解决方案
2020/06/18 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
2021/02/04 Python
HTML5 body设置自适应全屏
2020/05/07 HTML / CSS
国际性能运动服装品牌:Dare 2b
2018/07/27 全球购物
两道JAVA笔试题
2016/09/14 面试题
工商管理实习自我鉴定
2013/09/28 职场文书
大二学期个人自我评价
2014/01/13 职场文书
人事任命书范文
2014/06/04 职场文书
小学一年级数学教学计划
2015/01/20 职场文书
JavaScript事件的委托(代理)的用法示例详解
2022/02/18 Javascript