浅析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小技巧 把数组的键和值交换形成了新的数组,查找值取得键
Jun 02 PHP
php中++i 与 i++ 的区别
Aug 08 PHP
destoon整合UCenter图文教程
Jun 21 PHP
PHP实现数组递归转义的方法
Aug 28 PHP
php实现随机生成易于记忆的密码
Jun 19 PHP
php实现购物车功能(上)
Jul 23 PHP
简单谈谈PHP中strlen 函数
Feb 27 PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
Nov 14 PHP
Yii框架弹出框功能示例
Jan 07 PHP
php微信开发之关注事件
Jun 14 PHP
PHP PDOStatement::bindColumn讲解
Jan 30 PHP
TP框架实现上传一张图片和批量上传图片的方法分析
Apr 23 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中Cannot send session cache limiter 的问题的方法
2007/04/27 PHP
phpMyAdmin 链接表的附加功能尚未激活的问题
2010/08/01 PHP
php简单获取复选框值的方法
2016/05/11 PHP
PHP实现的函数重载功能示例
2018/08/03 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
2020/02/27 PHP
php7 新增功能实例总结
2020/05/25 PHP
js textarea自动增高并隐藏滚动条
2009/12/16 Javascript
JavaScript CSS修改学习第五章 给“上传”添加样式
2010/02/19 Javascript
js返回上一页并刷新代码整理
2012/12/21 Javascript
7款风格新颖的jQuery/CSS3菜单导航分享
2013/04/23 Javascript
jquery的live使用注意事项
2014/02/18 Javascript
thinkphp中常用的系统常量和系统变量
2014/03/05 Javascript
jfreechart插件将数据展示成饼状图、柱状图和折线图
2015/04/13 Javascript
jquery实现简单的自动播放幻灯片效果
2015/06/13 Javascript
基于jQuery的AJAX和JSON实现纯html数据模板
2016/08/09 Javascript
Nodejs 搭建简单的Web服务器详解及实例
2016/11/30 NodeJs
jQuery Ajax前后端使用JSON进行交互示例
2017/03/17 Javascript
vue实现nav导航栏的方法
2017/12/13 Javascript
jQuery实现模糊查询的方法分析
2018/05/10 jQuery
Vue.js更改调试地址端口号的实例
2018/09/19 Javascript
零基础之Node.js搭建API服务器的详解
2019/03/08 Javascript
ES6基础之 Promise 对象用法实例详解
2019/08/22 Javascript
简单了解JavaScript arguement原理及作用
2020/05/28 Javascript
通过实例了解Nodejs模块系统及require机制
2020/07/16 NodeJs
js实现详情页放大镜效果
2020/10/28 Javascript
video.js添加自定义组件的方法
2020/12/09 Javascript
Vue-router中hash模式与history模式的区别详解
2020/12/15 Vue.js
python 实现字符串下标的输出功能
2020/02/13 Python
Django返回HTML文件的实现方法
2020/09/17 Python
详解python第三方库的安装、PyInstaller库、random库
2021/03/03 Python
SQL面试题
2013/12/09 面试题
中学生国旗下讲话稿
2014/04/26 职场文书
机械专业应届毕业生自荐书
2014/06/12 职场文书
幼儿园中班区域活动总结
2014/07/09 职场文书
2015年教研员工作总结
2015/05/26 职场文书
TypeScript 使用 Tuple Union 声明函数重载
2022/04/07 Javascript