浅析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中的 == 运算符进行字符串比较
Nov 26 PHP
PHP 已经成熟
Dec 04 PHP
解决中英文字符串长度问题函数
Jan 16 PHP
PHP 网页过期时间的控制代码
Jun 29 PHP
php设计模式 Bridge (桥接模式)
Jun 26 PHP
基于simple_html_dom的使用小结
Jul 01 PHP
浅析php工厂模式
Nov 25 PHP
详解PHP中instanceof关键字及instanceof关键字有什么作用
Nov 05 PHP
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
Mar 15 PHP
PHP长连接实现与使用方法详解
Feb 11 PHP
thinkphp3.2同时连接两个数据库的简单方法
Aug 13 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
Dec 18 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里的中文变量说明
2011/07/23 PHP
php读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
2012/07/31 PHP
PHP7新特性之抽象语法树(AST)带来的变化详解
2018/07/17 PHP
PHP 对象继承原理与简单用法示例
2020/04/21 PHP
判断及设置浏览器全屏模式
2014/04/20 Javascript
jquery操作checkbox实现全选和取消全选
2014/05/02 Javascript
JS实现兼容性好,带缓冲的动感网页右键菜单效果
2015/09/18 Javascript
JavaScript原生对象常用方法总结(推荐)
2016/05/13 Javascript
jQuery图片轮播插件——前端开发必看
2016/05/31 Javascript
微信js-sdk界面操作接口用法示例
2016/10/12 Javascript
纯jQuery实现前端分页功能
2017/03/23 jQuery
layui 表格的属性的显示转换方法
2018/08/14 Javascript
全面解析vue router 基本使用(动态路由,嵌套路由)
2018/09/02 Javascript
简述pm2常用命令集合及配置文件说明
2019/05/30 Javascript
js实现html滑动图片拼图验证
2020/06/24 Javascript
python中将字典转换成其json字符串
2014/07/16 Python
Python执行时间的计算方法小结
2017/03/17 Python
Python编程使用tkinter模块实现计算器软件完整代码示例
2017/11/29 Python
Python实现购物车程序
2018/04/16 Python
对python内置map和six.moves.map的区别详解
2018/12/19 Python
基于多进程中APScheduler重复运行的解决方法
2019/07/22 Python
使用Python操作ArangoDB的方法步骤
2020/02/02 Python
django模型类中,null=True,blank=True用法说明
2020/07/09 Python
python中字典增加和删除使用方法
2020/09/30 Python
详解Python利用configparser对配置文件进行读写操作
2020/11/03 Python
利用python爬取有道词典的方法
2020/12/08 Python
HTML5 History API 实现无刷新跳转
2016/01/11 HTML / CSS
美国一家运动专业鞋类零售商:Warehouse Shoe Sale(WSS)
2018/03/28 全球购物
Wojas罗马尼亚网站:波兰皮鞋品牌
2018/11/01 全球购物
SQL面试题
2013/12/09 面试题
大学生求职计划书
2014/04/30 职场文书
监察建议书
2015/02/04 职场文书
黑白记忆观后感
2015/06/18 职场文书
餐厅如何利用“营销策略”扭转亏本局面
2019/10/15 职场文书
python-for x in range的用法(注意要点、细节)
2021/05/10 Python
python中的class_static的@classmethod的巧妙用法
2021/06/22 Python