浅析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者的疑难问答(2)
Oct 09 PHP
php下MYSQL limit的优化
Jan 10 PHP
PHP 超链接 抓取实现代码
Jun 29 PHP
php 函数中使用static的说明
Jun 01 PHP
Linux下实现PHP多进程的方法分享
Aug 16 PHP
php数据库备份还原类分享
Mar 20 PHP
PHP网络操作函数汇总
May 18 PHP
php中define用法实例
Jul 30 PHP
PHP内存缓存功能memcached示例
Oct 19 PHP
PHP堆栈调试操作简单示例
Jun 15 PHP
php代码调试利器firephp安装与使用方法分析
Aug 21 PHP
php json转换相关知识(小结)
Dec 21 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
一个连接两个不同MYSQL数据库的PHP程序
2006/10/09 PHP
定制404错误页面,并发信给管理员的程序
2006/10/09 PHP
php生成年月日下载列表的方法
2015/04/24 PHP
PHP实现的常规正则验证helper公共类完整实例
2017/04/27 PHP
php生成复杂验证码(倾斜,正弦干扰线,黏贴,旋转)
2018/03/12 PHP
Javascript数组的排序 sort()方法和reverse()方法
2012/06/04 Javascript
Knockoutjs快速入门(经典)
2012/12/24 Javascript
原生js实现跨浏览器获取鼠标按键的值
2013/04/08 Javascript
jQuery基于正则表达式的表单验证功能示例
2017/01/21 Javascript
基于jQuery实现图片推拉门动画效果的两种方法
2017/08/26 jQuery
在Debian(Raspberry Pi)树莓派上安装NodeJS的教程详解
2017/09/19 NodeJs
vue中的$emit 与$on父子组件与兄弟组件的之间通信方式
2018/05/13 Javascript
微信小程序HTTP接口请求封装代码实例
2019/09/05 Javascript
原理深度解析Vue的响应式更新比React快
2020/04/04 Javascript
JavaScript实现H5接金币功能(实例代码)
2021/02/22 Javascript
利用Python的Django框架中的ORM建立查询API
2015/04/20 Python
Django中URLconf和include()的协同工作方法
2015/07/20 Python
Python排序搜索基本算法之冒泡排序实例分析
2017/12/09 Python
TensorFlow实现Softmax回归模型
2018/03/09 Python
Python 中导入csv数据的三种方法
2018/11/01 Python
Python快速转换numpy数组中Nan和Inf的方法实例说明
2019/02/21 Python
python多线程抽象编程模型详解
2019/03/20 Python
Python日期格式和字符串格式相互转换的方法
2020/02/18 Python
使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例
2020/12/11 Python
八年级生物教学反思
2014/01/22 职场文书
学习自我鉴定
2014/02/01 职场文书
《美丽的田园》教学反思
2014/03/01 职场文书
广告创意求职信
2014/03/17 职场文书
《充气雨衣》教学反思
2014/04/07 职场文书
市场推广策划方案
2014/06/02 职场文书
关于感恩的演讲稿400字
2014/08/26 职场文书
2014年仓库管理员工作总结
2014/11/18 职场文书
2015年全国爱耳日活动总结
2015/02/27 职场文书
css3实现背景图片半透明内容不透明的方法示例
2021/04/13 HTML / CSS
讲解MySQL增删改操作
2022/05/06 MySQL
python区块链实现简版工作量证明
2022/05/25 Python