浅析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+mysql扎实个人基本功
Mar 27 PHP
php面向对象全攻略 (十四) php5接口技术
Sep 30 PHP
用PHP将网址字符串转换成超链接(网址或email)
May 25 PHP
防止用户利用PHP代码DOS造成用光网络带宽
Mar 01 PHP
smarty表格换行实例
Dec 15 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
Jan 15 PHP
postfixadmin忘记密码后的修改密码方法详解
Jul 20 PHP
php array_map使用自定义的函数处理数组中的每个值
Oct 26 PHP
PHP中危险的file_put_contents函数详解
Nov 04 PHP
Laravel向公共模板赋值方法总结
Jun 25 PHP
PHP 扩展Memcached命令用法实例总结
Jun 04 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使用glob函数遍历目录或文件夹的方法
2014/12/16 PHP
php使用pdo连接mssql server数据库实例
2014/12/25 PHP
php+xml实现在线英文词典之添加词条的方法
2015/01/23 PHP
PHP实现XML与数据格式进行转换类实例
2015/07/29 PHP
PHP pear安装配置教程
2016/05/14 PHP
javascript中强制执行toString()具体实现
2013/04/27 Javascript
javaScript面向对象继承方法经典实现
2013/08/20 Javascript
js使用数组判断提交数据是否存在相同数据
2013/11/27 Javascript
window.open()详解及浏览器兼容性问题示例探讨
2014/05/29 Javascript
网站基于flash实现的Banner图切换效果代码
2014/10/14 Javascript
jQuery实现立体式数字滚动条增加效果
2016/12/21 Javascript
Vue.js -- 过滤器使用总结
2017/02/18 Javascript
Vue2.0 多 Tab切换组件的封装实例
2017/07/28 Javascript
Vue的watch和computed方法的使用及区别介绍
2018/09/06 Javascript
详解React 的几种条件渲染以及选择
2018/10/23 Javascript
layui实现给某一列加点击事件
2019/10/26 Javascript
ES6 Iterator遍历器原理,应用场景及相关常用知识拓展详解
2020/02/15 Javascript
Electron+vue从零开始打造一个本地播放器的方法示例
2020/10/27 Javascript
python对字典进行排序实例
2014/09/25 Python
Python发送以整个文件夹的内容为附件的邮件的教程
2015/05/06 Python
Python中if __name__ == '__main__'作用解析
2015/06/29 Python
python3.5仿微软计算器程序
2020/03/30 Python
Python堆排序原理与实现方法详解
2018/05/11 Python
如何实现Django Rest framework版本控制
2019/07/25 Python
Python搭建代理IP池实现获取IP的方法
2019/10/27 Python
如何将你的应用迁移到Python3的三个步骤
2019/12/22 Python
Pyecharts 动态地图 geo()和map()的安装与用法详解
2020/03/25 Python
Python动态导入模块:__import__、importlib、动态导入的使用场景实例分析
2020/03/30 Python
HTML5+CSS3 诱人的实例:3D立方体旋转动画实例
2016/12/30 HTML / CSS
Html5移动端弹幕动画实现示例代码
2018/08/27 HTML / CSS
罗德与泰勒百货官网:Lord & Taylor
2016/08/12 全球购物
接受捐赠答谢词
2014/01/27 职场文书
建筑工程技术专业求职信
2014/07/16 职场文书
户籍证明格式
2014/09/15 职场文书
承租经营合作者协议书
2014/10/01 职场文书
光荣之路观后感
2015/06/12 职场文书