浅析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生成EXCEL的东东
Oct 09 PHP
php下几个常用的去空、分组、调试数组函数
Feb 22 PHP
php读取txt文件组成SQL并插入数据库的代码(原创自Zjmainstay)
Jul 31 PHP
php 批量生成html,txt文件的实现代码
Jun 26 PHP
PHP大批量插入数据库的3种方法和速度对比
Jul 08 PHP
php解析http获取的json字符串变量总是空白null
Mar 02 PHP
使用PHP similar text计算两个字符串相似度
Nov 06 PHP
Zend Framework入门应用实例详解
Dec 11 PHP
PHP实现的注册,登录及查询用户资料功能API接口示例
Jun 06 PHP
PDO::errorCode讲解
Jan 28 PHP
PHP去除空数组且数组键名重置的讲解
Feb 28 PHP
Yii框架 session 数据库存储操作方法示例
Nov 18 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
How do I change MySQL timezone?
2008/03/26 PHP
php 多关键字 高亮显示实现代码
2012/04/23 PHP
php多个文件及图片上传实例详解
2014/11/10 PHP
php使用MySQL保存session会话的方法
2015/06/26 PHP
ThinkPHP模板循环输出Volist标签用法实例详解
2016/03/23 PHP
PHP中include()与require()的区别说明
2017/02/14 PHP
thinkPHP5 ACL用户权限模块用法详解
2017/05/10 PHP
初探jquery——表单应用范例
2007/02/20 Javascript
jQuery的初始化与对象构建之浅析
2011/04/12 Javascript
JS仿Windows开机启动Loading进度条的方法
2015/02/26 Javascript
js实现select跳转菜单新窗口效果代码分享(超简单)
2015/08/21 Javascript
javascript伸缩菜单栏实现代码分享
2015/11/12 Javascript
javascript中eval和with用法实例总结
2015/11/30 Javascript
基于Bootstrap使用jQuery实现简单可编辑表格
2016/05/04 Javascript
使用jQuery判断浏览器滚动条位置的方法
2016/05/30 Javascript
在javascript中,null>=0 为真,null==0却为假,null的值详解
2017/02/22 Javascript
JavaScript DOM元素常见操作详解【添加、删除、修改等】
2018/05/09 Javascript
angular6.x中ngTemplateOutlet指令的使用示例
2018/08/09 Javascript
使用layer弹窗提交表单时判断表单是否输入为空的例子
2019/09/26 Javascript
mpvue微信小程序开发之实现一个弹幕评论
2019/11/24 Javascript
Python对小数进行除法运算的正确方法示例
2014/08/25 Python
Python+matplotlib实现计算两个信号的交叉谱密度实例
2018/01/08 Python
python实现用户答题功能
2018/01/17 Python
python中cPickle类使用方法详解
2018/08/27 Python
Python3 导入上级目录中的模块实例
2019/02/16 Python
python脚本实现mp4中的音频提取并保存在原目录
2020/02/27 Python
如何使用 Flask 做一个评论系统
2020/11/27 Python
CSS3的文字阴影—text-shadow的使用方法
2012/12/25 HTML / CSS
英国助听器购物网站:Hearing Direct
2018/08/21 全球购物
英国运动服、设备及配件网站:DW Sports
2019/12/04 全球购物
香港家用健身器材、运动器材及健康美容仪器专门店:FitBoxx
2019/12/05 全球购物
家居装修公司创业计划书范文
2014/03/20 职场文书
自荐信模板大全
2015/03/27 职场文书
2015年部门工作总结范文
2015/03/31 职场文书
观后感的写法
2015/06/19 职场文书
企业财务管理制度范本
2015/08/04 职场文书