浅析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 相关文章推荐
真正的ZIP文件操作类(php)
Jul 21 PHP
PHP 5.3 下载时 VC9、VC6、Thread Safe、Non Thread Safe的区别分析
Mar 28 PHP
php排序算法(冒泡排序,快速排序)
Oct 09 PHP
使用pthreads实现真正的PHP多线程(需PHP5.3以上版本)
May 05 PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
Jun 04 PHP
php强制用户转向www域名的方法
Jun 19 PHP
php类自动加载器实现方法
Jul 28 PHP
php外部执行命令函数用法小结
Oct 11 PHP
thinkPHP实现签到功能的方法
Mar 15 PHP
thinkPHP显示不出验证码的原因与解决方法分析
May 20 PHP
php图片合成方法(多张图片合成一张)
Nov 25 PHP
phpMyAdmin通过密码漏洞留后门文件
Nov 20 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
PHP4实际应用经验篇(2)
2006/10/09 PHP
PHP写入WRITE编码为UTF8的文件的实现代码
2008/07/07 PHP
php不使用copy()函数复制文件的方法
2015/03/13 PHP
微信支付PHP SDK ―― 公众号支付代码详解
2016/09/13 PHP
PHP PDOStatement::rowCount讲解
2019/02/01 PHP
在页面上点击任一链接时触发一个事件的代码
2007/04/07 Javascript
两款JS脚本判断手机浏览器类型跳转WAP手机网站
2015/10/16 Javascript
jquery实现九宫格大转盘抽奖
2015/11/13 Javascript
最全面的JS倒计时代码
2016/09/17 Javascript
纯JS代码实现隔行变色鼠标移入高亮
2016/11/23 Javascript
JS求解三元一次方程组值的方法
2017/01/03 Javascript
微信小程序 动态的设置图片的高度和宽度详解及实例代码
2017/02/24 Javascript
jQuery实现一个简单的验证码功能
2017/06/26 jQuery
vue-router2.0 组件之间传参及获取动态参数的方法
2017/11/10 Javascript
nodejs实现日志读取、日志查找及日志刷新的方法分析
2019/05/20 NodeJs
js实现课堂随机点名系统
2019/11/21 Javascript
jQuery实现可编辑的表格
2019/12/11 jQuery
JS中作用域以及变量范围分析
2020/07/18 Javascript
vue项目实现设置根据路由高亮对应的菜单项操作
2020/08/06 Javascript
在Python中移动目录结构的方法
2016/01/31 Python
Python PyQt5实现的简易计算器功能示例
2017/08/23 Python
python命令行解析之parse_known_args()函数和parse_args()使用区别介绍
2018/01/24 Python
详解pytorch 0.4.0迁移指南
2019/06/16 Python
Spring Cloud Feign高级应用实例详解
2019/12/10 Python
Python使用20行代码实现微信聊天机器人
2020/06/05 Python
详解如何用HTML5 Canvas API控制图片的缩放变换
2016/03/22 HTML / CSS
AmazeUI的JS表单验证框架实战示例分享
2020/08/21 HTML / CSS
台湾网友喜爱的综合型网路购物商城:Yahoo! 奇摩购物中心
2018/03/10 全球购物
Tenstickers法国:墙贴和装饰贴纸
2019/08/26 全球购物
亚马逊新加坡官方网站:Amazon.sg
2020/03/25 全球购物
服装设计师求职信
2014/06/04 职场文书
迎国庆演讲稿
2014/09/15 职场文书
2016形势与政策学习心得体会
2016/01/12 职场文书
解决python存数据库速度太慢的问题
2021/04/23 Python
分析SQL窗口函数之聚合窗口函数
2022/04/21 Oracle
python实现一个简单的贪吃蛇游戏附代码
2022/06/28 Python