浅析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 相关文章推荐
[FAQ]PHP中的一些常识:类篇
Oct 09 PHP
BBS(php &amp; mysql)完整版(六)
Oct 09 PHP
PHP脚本的10个技巧(6)
Oct 09 PHP
关于PHP5 Session生命周期介绍
Mar 02 PHP
解析thinkphp基本配置 convention.php
Jun 18 PHP
PHP中exec函数和shell_exec函数的区别
Aug 20 PHP
php批量删除数据库下指定前缀的表以prefix_为例
Aug 24 PHP
PHP中常用的字符串格式化函数总结
Nov 19 PHP
Symfony数据校验方法实例分析
Jan 26 PHP
php中header跳转使用include包含解决参数丢失问题
May 08 PHP
php获取网站百度快照日期的方法
Jul 29 PHP
php判断/计算闰年的方法小结【三种方法】
Jul 06 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 分页类实现代码
2009/12/03 PHP
解析php常用image图像函数集
2013/06/24 PHP
php采用curl实现伪造IP来源的方法
2014/11/21 PHP
php提交表单发送邮件的方法
2015/03/20 PHP
PHP使用SWOOLE扩展实现定时同步 MySQL 数据
2017/04/09 PHP
PHP重载基础知识回顾
2020/09/10 PHP
js类中的公有变量和私有变量
2008/07/24 Javascript
图片连续滚动代码[兼容IE/firefox]
2009/06/11 Javascript
jQuery EasyUI API 中文文档 - Calendar日历使用
2011/10/19 Javascript
仿新浪微博返回顶部的jquery实现代码
2012/10/01 Javascript
form表单中去掉默认的enter键提交并绑定js方法实现代码
2013/04/01 Javascript
jQuery实现冻结表格行和列
2015/04/29 Javascript
JS实现当前页居中分页效果的方法
2015/06/18 Javascript
jquery模拟实现鼠标指针停止运动事件
2016/01/12 Javascript
jQuery实现漂亮实用的商品图片tips提示框效果(无图片箭头+阴影)
2016/04/16 Javascript
jQuery unbind 删除绑定事件详解
2016/05/24 Javascript
javascript设计模式之Adapter模式【适配器模式】实现方法示例
2017/01/13 Javascript
JS实现按钮添加背景音乐示例代码
2017/10/17 Javascript
简单理解Vue中的nextTick方法
2018/01/30 Javascript
详解关于html,css,js三者的加载顺序问题
2019/04/10 Javascript
Bootstrap实现前端登录页面带验证码功能完整示例
2020/03/26 Javascript
javascript实现获取中文汉字拼音首字母
2020/05/19 Javascript
jQuery 移除事件的方法
2020/06/20 jQuery
Vue 按照创建时间和当前时间显示操作(刚刚,几小时前,几天前)
2020/09/10 Javascript
Django框架中方法的访问和查找
2015/07/15 Python
详解Python操作RabbitMQ服务器消息队列的远程结果返回
2016/06/30 Python
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)
2020/10/12 Python
Python绘图实现台风路径可视化代码实例
2020/10/23 Python
日本卡普空电视游戏软件公司官方购物网站:e-CAPCOM
2018/07/17 全球购物
分公司经理岗位职责
2013/11/11 职场文书
思想汇报格式
2014/01/05 职场文书
《乞巧》教学反思
2014/02/27 职场文书
财务部副经理岗位职责范本
2014/06/17 职场文书
运动会开幕式致辞
2015/07/29 职场文书
三八妇女节致辞
2015/07/31 职场文书
《宝可梦》动画制作25周年到来 官方发布特别纪念视频
2022/04/01 日漫