浅析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 array_search() 函数使用
Apr 13 PHP
php代码收集表单内容并写入文件的代码
Jan 29 PHP
ThinkPHP关联模型操作实例分析
Sep 23 PHP
php函数指定默认值方法的小例子
Dec 04 PHP
非常实用的php弹出错误警告函数扩展性强
Jan 17 PHP
PHP实现的多彩标签效果代码分享
Aug 21 PHP
PHP中变量引用与变量销毁机制分析
Nov 15 PHP
PHP记录搜索引擎蜘蛛访问网站足迹的方法
Apr 15 PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
Mar 03 PHP
PHP递归实现汉诺塔问题的方法示例
Nov 25 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
Oct 11 PHP
Docker 安装 PHP并与Nginx的部署实例讲解
Feb 27 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语法(4)
2006/10/09 PHP
php实现最简单的MVC框架实例教程
2014/09/08 PHP
php根据日期或时间戳获取星座信息和生肖等信息
2015/10/20 PHP
php实现图片上传、剪切功能
2016/05/07 PHP
Yii2.0 模态弹出框+ajax提交表单
2016/05/22 PHP
使用闭包对setTimeout进行简单封装避免出错
2013/07/10 Javascript
JavaScript中自定义事件用法分析
2014/12/23 Javascript
JavaScript实现自动变换表格边框颜色
2015/05/08 Javascript
如何使用jQuery技术开发ios风格的页面导航菜单
2015/07/29 Javascript
学习JavaScript设计模式之代理模式
2016/01/12 Javascript
如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)
2016/02/23 Javascript
轻量级jQuery插件slideBox实现带底栏轮播(焦点图)代码
2016/03/28 Javascript
HTML5 JS压缩图片并获取图片BASE64编码上传
2020/11/16 Javascript
node.js中debug模块的简单介绍与使用
2017/04/25 Javascript
利用jquery去掉时光轴头尾部线条的方法实例
2017/06/16 jQuery
angular4模块中给标签添加背景图的实现方法
2017/09/15 Javascript
浅谈vue项目重构技术要点和总结
2018/01/23 Javascript
js防抖和节流的深入讲解
2018/12/06 Javascript
如何在node环境实现“get数据解析”代码实例
2020/07/03 Javascript
Vue 3自定义指令开发的相关总结
2021/01/29 Vue.js
[57:53]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#3OG VS VP
2016/03/03 DOTA
python中的内置函数getattr()介绍及示例
2014/07/20 Python
Python动刷新抢12306火车票的代码(附源码)
2018/01/24 Python
windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)
2018/02/21 Python
tensorflow构建BP神经网络的方法
2018/03/12 Python
python画图常规设置方式
2020/03/05 Python
Python中openpyxl实现vlookup函数的实例
2020/10/28 Python
自考自我鉴定范文
2013/10/30 职场文书
材料物理专业个人求职信
2013/12/15 职场文书
剪枝的学问教学反思
2014/02/07 职场文书
《寓言两则》教学反思
2014/02/27 职场文书
新年主持词
2014/03/27 职场文书
敬老院活动总结
2014/04/28 职场文书
雏鹰争章活动总结
2014/05/09 职场文书
体育专业求职信
2014/07/16 职场文书
MySQL中JOIN连接的基本用法实例
2022/06/05 MySQL