浅析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获取MAC地址的函数代码
Sep 11 PHP
一个简单的php加密解密函数(动态加密)
Jun 19 PHP
php缓存技术详细总结
Aug 07 PHP
PHP error_log()将错误信息写入一个文件(定义和用法)
Oct 25 PHP
php封装的连接Mysql类及用法分析
Dec 10 PHP
PHP  Yii清理缓存的实现方法
Nov 10 PHP
PHP使用递归算法无限遍历数组示例
Jan 13 PHP
php nginx 实时输出的简单实现方法
Jan 21 PHP
PHP利用Mysql锁解决高并发的方法
Sep 04 PHP
PHP 7.4中使用预加载的方法详解
Jul 08 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
Aug 27 PHP
Laravel 模型关联基础教程详解
Sep 17 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开发者事半功倍的十大技巧小结
2010/04/20 PHP
php fseek函数读取大文件两种方法
2016/10/12 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
PHP连接MySQL数据库三种实现方法
2020/12/10 PHP
onpropertypchange
2006/07/01 Javascript
js DataSet数据源处理代码
2010/03/29 Javascript
JavaScript 笔记二 Array和Date对象方法
2010/05/22 Javascript
js列举css中所有图标的实现代码
2011/07/04 Javascript
js 关于=+与+=日期函数使用说明(赋值运算符)
2011/11/15 Javascript
nodejs中转换URL字符串与查询字符串详解
2014/11/26 NodeJs
js实现的彩色方块飞舞奇幻效果
2016/01/27 Javascript
JavaScript正则表达式和级联效果
2017/09/14 Javascript
Django与Vue语法的冲突问题完美解决方法
2017/12/14 Javascript
用Node编写RESTful API接口的示例代码
2018/07/04 Javascript
JavaScript实用代码小技巧
2018/08/23 Javascript
微信小程序实现的一键连接wifi功能示例
2019/04/24 Javascript
es6函数之尾递归用法实例分析
2020/04/25 Javascript
JavaScript常用工具函数大全
2020/05/06 Javascript
微信小程序实现简单购物车功能
2020/12/30 Javascript
python二叉树遍历的实现方法
2013/11/21 Python
简单介绍Python中的JSON模块
2015/04/08 Python
Python数据可视化编程通过Matplotlib创建散点图代码示例
2017/12/09 Python
解决Matplotlib图表不能在Pycharm中显示的问题
2018/05/24 Python
pandas 数据结构之Series的使用方法
2019/06/21 Python
用Cython加速Python到“起飞”(推荐)
2019/08/01 Python
opencv+python实现均值滤波
2020/02/19 Python
python数字类型math库原理解析
2020/03/02 Python
Python程序慢的重要原因
2020/09/04 Python
python中使用asyncio实现异步IO实例分析
2021/02/26 Python
html5实现九宫格抽奖可固定抽中某项奖品
2020/06/15 HTML / CSS
美国益智玩具购物网站:Fat Brain Toys
2017/11/03 全球购物
Linux面试经常问的文件系统操作命令
2015/11/05 面试题
药物学专业学生的自我评价
2013/10/27 职场文书
行政总监岗位职责
2013/12/05 职场文书
初中语文教学随笔
2015/08/15 职场文书
导游词之上海东方明珠塔
2019/09/25 职场文书