浅析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 empty,isset,is_null判断比较(差异与异同)
Oct 19 PHP
上传文件先创建目录 再上传到目录里面去
Dec 29 PHP
sphinx增量索引的一个问题
Jun 14 PHP
PHP无限分类(树形类)的深入分析
Jun 02 PHP
PHP中array_map与array_column之间的关系分析
Aug 19 PHP
smarty模板引擎从配置文件中获取数据的方法
Jan 22 PHP
PHP生成可点击刷新的验证码简单示例
May 13 PHP
基于PHP实现短信验证码接口(容联运通讯)
Sep 06 PHP
PHP实现Unicode编码相互转换的方法示例
Nov 17 PHP
YII框架实现自定义第三方扩展操作示例
Apr 26 PHP
如何在Mac上通过docker配置PHP开发环境
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 AJAX实例根据邮编自动完成地址信息
2008/11/23 PHP
PHP通用检测函数集合
2011/02/08 PHP
深入for,while,foreach遍历时间比较的详解
2013/06/08 PHP
浅析PHP Socket技术
2013/08/02 PHP
Yii安装与使用Excel扩展的方法
2016/07/13 PHP
PHP addslashes()函数讲解
2019/02/03 PHP
node.js实现BigPipe详解
2014/12/05 Javascript
使用JavaScript实现旋转的彩圈特效
2015/06/23 Javascript
jquery validate和jquery form 插件组合实现验证表单后AJAX提交
2015/08/26 Javascript
jQuery实现三级联动效果
2017/03/02 Javascript
利用SpringMVC过滤器解决vue跨域请求的问题
2018/02/10 Javascript
D3.js实现拓扑图的示例代码
2018/06/30 Javascript
使用ESLint禁止项目导入特定模块的方法步骤
2019/03/04 Javascript
微信小程序实现获取小程序码和二维码java接口开发
2019/03/29 Javascript
webpack3.0升级4.0的方法步骤
2020/04/02 Javascript
Python中使用PIL库实现图片高斯模糊实例
2015/02/08 Python
查看Python安装路径以及安装包路径小技巧
2015/04/28 Python
Python SQLite3简介
2018/02/22 Python
pandas数据清洗,排序,索引设置,数据选取方法
2018/05/18 Python
对Python3 pyc 文件的使用详解
2019/02/16 Python
Python实现的旋转数组功能算法示例
2019/02/23 Python
几个适合python初学者的简单小程序,看完受益匪浅!(推荐)
2019/04/16 Python
python 多线程对post请求服务器测试并发的方法
2019/06/13 Python
Python with关键字,上下文管理器,@contextmanager文件操作示例
2019/10/17 Python
简单了解python装饰器原理及使用方法
2019/12/18 Python
python 中的[:-1]和[::-1]的具体使用
2020/02/13 Python
python 实现的车牌识别项目
2021/01/25 Python
使用Python爬取小姐姐图片(beautifulsoup法)
2021/02/11 Python
细说CSS3中box属性中的overflow-x属性和overflow-y属性值的效果
2014/07/21 HTML / CSS
美国现代家具购物网站:LexMod
2019/01/09 全球购物
女士和男士时尚鞋在线购物:Shoespie
2019/02/28 全球购物
华美博弈C/VC工程师笔试试题
2012/07/16 面试题
人力资源管理专业应届生求职信
2013/09/28 职场文书
歌颂党的演讲稿
2014/09/10 职场文书
公务员上班玩游戏检讨书
2014/09/17 职场文书
2015年秋学期教研工作总结
2015/10/14 职场文书