浅析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报表之jpgraph柱状图实例代码
Aug 22 PHP
php中session使用示例
Mar 29 PHP
PHP include任意文件或URL介绍
Apr 29 PHP
php创建无限级树型菜单
Nov 05 PHP
Zend Framework缓存Cache用法简单实例
Mar 19 PHP
PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
Apr 14 PHP
Zend Framework动作控制器用法示例
Dec 09 PHP
PHP实现的折半查找算法示例
Dec 19 PHP
PHP的静态方法与普通方法用法实例分析
Sep 26 PHP
Laravel统计一段时间间隔的数据方法
Oct 09 PHP
Laravel框架源码解析之模型Model原理与用法解析
May 14 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和ACCESS写聊天室(五)
2006/10/09 PHP
linux下使用ThinkPHP需要注意大小写导致的问题
2011/08/02 PHP
php防止恶意刷新与刷票的方法
2014/11/21 PHP
php 魔术常量详解及实例代码
2016/12/04 PHP
PHP封装XML和JSON格式数据接口操作示例
2019/03/06 PHP
jQuery使用之标记元素属性用法实例
2015/01/19 Javascript
angularJS 入门基础
2015/02/09 Javascript
JS折半插入排序算法实例
2015/12/02 Javascript
jQuery树插件zTree使用方法详解
2017/05/02 jQuery
jQuery 循环遍历改变a标签的href(实例讲解)
2017/07/12 jQuery
Vue 表情包输入组件的实现代码
2019/01/21 Javascript
bootstrap-table formatter 使用vue组件的方法
2019/05/09 Javascript
ElementUI Tree 树形控件的使用并给节点添加图标
2020/02/27 Javascript
使用Python进行新浪微博的mid和url互相转换实例(10进制和62进制互算)
2014/04/25 Python
python实现TCP服务器端与客户端的方法详解
2015/04/30 Python
Python的Urllib库的基本使用教程
2015/04/30 Python
Python中的一些陷阱与技巧小结
2015/07/10 Python
python opencv 直方图反向投影的方法
2018/02/24 Python
python编写简易聊天室实现局域网内聊天功能
2018/07/28 Python
windows7 32、64位下python爬虫框架scrapy环境的搭建方法
2018/11/29 Python
如何使用pyinstaller打包32位的exe程序
2019/05/26 Python
python3+PyQt5 使用三种不同的简便项窗口部件显示数据的方法
2019/06/17 Python
python支付宝支付示例详解
2019/08/22 Python
logging level级别介绍
2020/02/21 Python
PyCharm 无法 import pandas 程序卡住的解决方式
2020/03/09 Python
python利用xlsxwriter模块 操作 Excel
2020/10/14 Python
python unichr函数知识点总结
2020/12/16 Python
HTML5 虚拟键盘出现挡住输入框的解决办法
2017/02/14 HTML / CSS
英国最专业的健身器材供应商之一:Best Gym Equipment
2017/12/22 全球购物
学习党章思想汇报
2014/01/07 职场文书
社区工作者感言
2014/03/02 职场文书
优秀的个人求职信范文
2014/05/09 职场文书
纪检干部先进事迹材料
2014/08/23 职场文书
债务纠纷代理词
2015/05/25 职场文书
Python的这些库,你知道多少?
2021/06/09 Python
win10如何开启ahci模式?win10开启ahci模式详细操作教程
2022/07/23 数码科技