浅析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 10 PHP
CodeIgniter模板引擎使用实例
Jul 15 PHP
php站内搜索关键词变亮的实现方法
Dec 30 PHP
PHP中的Session对象如何使用
Sep 25 PHP
搭建Vim为自定义的PHP开发工具的一些技巧
Dec 11 PHP
php实现微信公众号主动推送消息
Dec 31 PHP
php文档工具PHP Documentor安装与使用方法
Jan 25 PHP
php简单实现短网址(短链)还原的方法(测试可用)
May 09 PHP
图文详解PHP环境搭建教程
Jul 16 PHP
微信随机生成红包金额算法php版
Jul 21 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
Sep 11 PHP
laravel 输出最后执行sql 附:whereIn的使用方法
Oct 10 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原理的opcodes(操作码)
2010/10/26 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
关于javascript中this关键字(翻译+自我理解)
2010/10/20 Javascript
javascript 主动派发事件总结
2011/08/09 Javascript
Javascript 遮罩层和加载效果代码
2013/08/01 Javascript
javascript 中that的含义示例介绍
2014/05/14 Javascript
详谈jQuery操纵DOM元素属性 attr()和removeAtrr()方法
2015/01/22 Javascript
jquery京东商城双11焦点图多图广告特效代码分享
2015/09/06 Javascript
ajax 提交数据到后台jsp页面及页面跳转问题
2017/01/19 Javascript
node.js中EJS 模板快速入门教程
2017/05/08 Javascript
详解vue-cli 脚手架项目-package.json
2017/07/04 Javascript
gulp教程_从入门到项目中快速上手使用方法
2017/09/14 Javascript
vue-cli如何引入bootstrap工具的方法
2017/10/19 Javascript
JS实现瀑布流布局
2017/10/21 Javascript
深入浅析javascript函数中with
2018/10/28 Javascript
微信小程序实现Session功能及无法获取session问题的解决方法
2019/05/07 Javascript
JS拖动选择table里的单元格完整实例【基于jQuery】
2019/05/28 jQuery
使用vue3重构拼图游戏的实现示例
2021/01/25 Vue.js
python getopt 参数处理小示例
2009/06/09 Python
详解Python2.x中对Unicode编码的使用
2015/04/03 Python
理解Python垃圾回收机制
2016/02/12 Python
Python中矩阵库Numpy基本操作详解
2017/11/21 Python
Anaconda入门使用总结
2018/04/05 Python
django1.11.1 models 数据库同步方法
2018/05/30 Python
python+opencv实现摄像头调用的方法
2019/06/22 Python
Django使用Channels实现WebSocket的方法
2019/07/28 Python
django-filter和普通查询的例子
2019/08/12 Python
Pycharm 字体大小调整设置的方法实现
2019/09/27 Python
财务人员个人自荐信范文
2013/09/26 职场文书
2014年党支部学习材料
2014/05/19 职场文书
志愿者个人总结
2015/03/03 职场文书
寻找最美乡村教师观后感
2015/06/18 职场文书
入党函调证明材料
2015/06/19 职场文书
单位病假条范文
2015/08/17 职场文书
PostgreSQL将数据加载到buffer cache中操作方法
2021/04/16 PostgreSQL
MySQL范围查询优化的场景实例详解
2022/06/10 MySQL