浅析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 相关文章推荐
模仿OSO的论坛(二)
Oct 09 PHP
UCenter中的一个可逆加密函数authcode函数代码
Jul 20 PHP
PHP句法规则详解 入门学习
Nov 09 PHP
php创建基本身份认证站点的方法详解
Jun 08 PHP
浅析PHP 按位与或 (^ 、&amp;)
Jun 21 PHP
php取整函数ceil,floo,round的用法及介绍
Aug 31 PHP
smarty模板引擎之配置文件数据和保留数据
Mar 30 PHP
PHP中生成UUID自定义函数分享
Jun 10 PHP
Symfony生成二维码的方法
Feb 04 PHP
Yii中srbac权限扩展模块工作原理与用法分析
Jul 14 PHP
PHP版单点登陆实现方案的实例
Nov 17 PHP
Yii框架模拟组件调用注入示例
Nov 11 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 5.0对象模型深度探索之类的静态成员
2008/03/27 PHP
ThinkPHP采用原生query实现关联查询left join实例
2014/12/02 PHP
php实现计数器方法小结
2015/01/05 PHP
PHP操作Redis数据库常用方法示例
2018/08/25 PHP
PHP文件操作实例总结【文件上传、下载、分页】
2018/12/08 PHP
PHP消息队列实现及应用详解【队列处理订单系统和配送系统】
2019/05/20 PHP
javascript 语法基础 想学习js的朋友可以看看
2009/12/16 Javascript
文本框中,回车键触发事件的js代码[多浏览器兼容]
2010/06/07 Javascript
6款经典实用的jQuery小插件及源码(对话框/提示工具等等)
2013/02/04 Javascript
jquery批量设置属性readonly和disabled的方法
2014/01/24 Javascript
浅谈jQuery中replace()方法
2015/05/13 Javascript
分享一些常用的jQuery动画事件和动画函数
2015/11/27 Javascript
Bootstrap Metronic完全响应式管理模板学习笔记
2016/07/08 Javascript
angularJs中orderBy筛选以及filter过滤数据的方法
2018/09/30 Javascript
Vux+Axios拦截器增加loading的问题及实现方法
2018/11/08 Javascript
vue form check 表单验证的实现代码
2018/12/09 Javascript
使用uni-app开发微信小程序的实现
2019/12/13 Javascript
原生js生成图片验证码
2020/10/11 Javascript
详解Python中的日志模块logging
2015/06/19 Python
Python中selenium实现文件上传所有方法整理总结
2017/04/01 Python
Python编写登陆接口的方法
2017/07/10 Python
pycharm修改file type方式
2019/11/19 Python
Python 使用 prettytable 库打印表格美化输出功能
2019/12/26 Python
python+tifffile之tiff文件读写方式
2020/01/13 Python
Python定时器线程池原理详解
2020/02/26 Python
Python Opencv轮廓常用操作代码实例解析
2020/09/01 Python
video下autoplay属性无效的解决方法(添加muted属性)
2020/05/19 HTML / CSS
日本酒店、民宿、温泉旅馆、当地旅行团中文预订:e路东瀛
2019/12/09 全球购物
JSF面试题:如何管量web层中的Bean,用什么标签。如何通过jsp页面与Bean绑定在一起进行处理?
2012/10/05 面试题
软件测试英文面试题
2012/10/14 面试题
初中化学教学反思
2014/01/23 职场文书
超市开店计划书
2014/04/26 职场文书
关于环保的标语
2014/06/13 职场文书
2017寒假社会实践心得体会范文
2016/01/14 职场文书
mysql left join快速转inner join的过程
2021/06/30 MySQL
Python游戏开发实例之graphics实现AI五子棋
2021/11/01 Python