浅析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 相关文章推荐
第十四节 命名空间 [14]
Oct 09 PHP
session 的生命周期是多长
Oct 09 PHP
用PHP和ACCESS写聊天室(二)
Oct 09 PHP
国外比较好的几个的Php开源建站平台小结
Apr 22 PHP
easyui的tabs update正确用法分享
Mar 21 PHP
Win7 64位系统下PHP连接Oracle数据库
Aug 20 PHP
ThinkPHP自动完成中使用函数与回调方法实例
Nov 29 PHP
PHP SPL标准库之文件操作(SplFileInfo和SplFileObject)实例
May 11 PHP
Symfony控制层深入详解
Mar 17 PHP
ThinkPHP中where()使用方法详解
Apr 19 PHP
PHP获取指定日期是星期几的实现方法
Nov 30 PHP
PHP排序算法之归并排序(Merging Sort)实例详解
Apr 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
php中用socket模拟http中post或者get提交数据的示例代码
2013/08/08 PHP
PHP实现动态创建XML文档的方法
2018/03/30 PHP
php+js实现裁剪任意形状图片
2018/10/31 PHP
php实现的PDO异常处理操作分析
2018/12/27 PHP
PHP PDOStatement::getColumnMeta讲解
2019/02/01 PHP
javascript 关于# 和 void的区别分析
2009/10/26 Javascript
根据经纬度计算地球上两点之间的距离js实现代码
2013/03/05 Javascript
JavaScript获取FCK编辑器信息的具体方法
2013/07/12 Javascript
js加密解密字符串可自定义密码因子
2014/05/13 Javascript
jQuery实现折线图的方法
2015/02/28 Javascript
jQuery实现选中弹出窗口选择框内容后赋值给文本框的方法
2015/11/23 Javascript
教你如何在Node.js中使用jQuery
2016/08/28 Javascript
使用requirejs模块化开发多页面一个入口js的使用方式
2017/06/14 Javascript
浅谈Vuex@2.3.0 中的 state 支持函数申明
2017/11/22 Javascript
使用VUE+iView+.Net Core上传图片的方法示例
2019/01/04 Javascript
javascript头像上传代码实例
2019/09/28 Javascript
JS合并两个数组的3种方法详解
2019/10/24 Javascript
整理 node-sass 安装失败的原因及解决办法(小结)
2020/02/19 Javascript
python下载文件时显示下载进度的方法
2015/04/02 Python
通过5个知识点轻松搞定Python的作用域
2016/09/09 Python
python中将zip压缩包转为gz.tar的方法
2018/10/18 Python
浅谈python中get pass用法
2019/03/19 Python
python接口自动化(十六)--参数关联接口后传(详解)
2019/04/16 Python
Python 实现微信防撤回功能
2019/04/29 Python
不到40行代码用Python实现一个简单的推荐系统
2019/05/10 Python
Python列表解析操作实例总结
2020/02/26 Python
Python中如何引入第三方模块
2020/05/27 Python
土耳其时尚购物网站:Morhipo
2017/09/04 全球购物
LVMH旗下最大的奢侈品网站平台:24S
2020/05/24 全球购物
金智子午JAVA面试题
2015/09/04 面试题
上海奥佳笔试题面试题
2016/11/16 面试题
行政管理专业推荐信
2013/11/02 职场文书
妇科医生自荐信
2013/11/05 职场文书
未婚证明书模板
2014/10/08 职场文书
暑期社会实践个人总结
2015/03/06 职场文书
电影开国大典观后感
2015/06/04 职场文书