浅析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字符转义相关函数小结(php下的转义字符串)
Apr 12 PHP
PHP获取用户的浏览器与操作系统信息的代码
Sep 04 PHP
PHP中计算字符串相似度的函数代码
Dec 29 PHP
多个PHP中文字符串截取函数
Nov 12 PHP
PHP中一些可以替代正则表达式函数的字符串操作函数
Nov 17 PHP
Yii使用ajax验证显示错误messagebox的解决方法
Dec 03 PHP
使用 PHPStorm 开发 Laravel
Mar 24 PHP
php获取远程文件的内容和大小
Nov 03 PHP
CI映射(加载)数据到view层的方法
Mar 28 PHP
ThinkPHP 模板substr的截取字符串函数详解
Jan 09 PHP
PHP基于DOMDocument解析和生成xml的方法分析
Jul 17 PHP
PHP两个n位的二进制整数相加问题的解决
Aug 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
Body是什么,该怎么喝出咖啡里的口感
2021/03/03 咖啡文化
php程序内部post数据的方法
2015/03/31 PHP
详解yii2使用多个数据库的案例
2017/06/16 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
Autocomplete Textbox Example javascript实现自动完成成功
2007/08/17 Javascript
javascript 全角转换实现代码
2009/07/17 Javascript
js淡入淡出的图片轮播效果代码分享
2015/08/24 Javascript
基于jQuery实现表格的查看修改删除
2016/08/01 Javascript
Angularjs中controller的三种写法分享
2016/09/21 Javascript
react native带索引的城市列表组件的实例代码
2017/08/08 Javascript
jQuery实现获取选中复选框的值实例详解
2018/06/28 jQuery
Vue-cli@3.0 插件系统简析
2018/09/05 Javascript
angular 数据绑定之[]和{{}}的区别
2018/09/25 Javascript
解决layui轮播图有数据不显示的情况
2019/09/16 Javascript
微信小程序swiper使用网络图片不显示问题解决
2019/12/13 Javascript
js实现纯前端压缩图片
2020/11/16 Javascript
[01:15:36]加油刀塔第二期网络版
2014/08/09 DOTA
用Python实现一个简单的能够上传下载的HTTP服务器
2015/05/05 Python
Python使用正则表达式实现文本替换的方法
2017/04/18 Python
Python使用matplotlib实现基础绘图功能示例
2018/07/03 Python
Pandas读取并修改excel的示例代码
2019/02/17 Python
解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题
2019/08/23 Python
Django实现WebSSH操作物理机或虚拟机的方法
2019/11/06 Python
如何通过python实现人脸识别验证
2020/01/17 Python
Django-rest-framework中过滤器的定制实例
2020/04/01 Python
通俗讲解python 装饰器
2020/09/07 Python
详解H5本地储存Web Storage
2017/07/03 HTML / CSS
线程问题:wait()方法是定义在哪个类里面
2015/07/07 面试题
工程力学专业毕业生求职信
2013/10/06 职场文书
就业自荐书
2013/12/05 职场文书
贸易经济专业自荐书
2014/06/29 职场文书
2014年秋季开学典礼致辞
2014/08/02 职场文书
感谢信的格式
2015/01/21 职场文书
2015教师个人年度工作总结
2015/10/23 职场文书
大学生团支书竞选稿
2015/11/21 职场文书
为自由献出你的心脏!「进击的巨人展 FINAL」2022年6月在台开展
2022/04/13 日漫