浅析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函数解决SQL injection
Oct 09 PHP
第九节--绑定
Nov 16 PHP
用PHP查询域名状态whois的类
Nov 25 PHP
PHP的error_reporting错误级别变量对照表
Jul 08 PHP
codeigniter上传图片不能正确识别图片类型问题解决方法
Jul 25 PHP
PHP常用正则表达式集锦
Aug 17 PHP
PHP连接MSSQL方法汇总
Feb 05 PHP
Yii中srbac权限扩展模块工作原理与用法分析
Jul 14 PHP
PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
Apr 27 PHP
Laravel使用PHPQRCODE实现生成带有LOGO的二维码图片功能示例
Jul 07 PHP
php多文件打包下载的实例代码
Jul 12 PHP
Thinkphp 框架扩展之行为扩展原理与实现方法分析
Apr 23 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/06/20 PHP
PHP 处理图片的类实现代码
2009/10/23 PHP
php快速url重写更新版[需php 5.30以上]
2010/04/25 PHP
PHP获得数组交集与差集的方法
2015/06/10 PHP
PHP的Yii框架中移除组件所绑定的行为的方法
2016/03/18 PHP
Yii2创建控制器(createController)方法详解
2016/07/23 PHP
通过隐藏option实现select的联动效果
2009/11/10 Javascript
分享20多个很棒的jQuery 文件上传插件或教程
2011/09/04 Javascript
jquery利用event.which方法获取键盘输入值的代码
2011/10/09 Javascript
用js闭包的方法实现多点标注冒泡示例
2014/05/29 Javascript
javascript表单验证和Window详解
2014/12/11 Javascript
javascript中 try catch用法
2015/08/16 Javascript
Java中Timer的用法详解
2015/10/21 Javascript
js文字横向滚动特效
2015/11/11 Javascript
Node.js中Request模块处理HTTP协议请求的基本使用教程
2016/03/31 Javascript
js实现div在页面拖动效果
2016/05/04 Javascript
node.js中fs.stat与fs.fstat的区别详解
2017/06/01 Javascript
基于构造函数的五种继承方法小结
2017/07/27 Javascript
利用vue和element-ui设置表格内容分页的实例
2018/03/02 Javascript
如何解决webpack-dev-server代理常切换问题
2019/01/09 Javascript
vue2.0项目集成Cesium的实现方法
2019/07/30 Javascript
vue 修改 data 数据问题并实时显示操作
2020/09/07 Javascript
详解Python中DOM方法的动态性
2015/04/11 Python
Python爬虫爬取美剧网站的实现代码
2016/09/03 Python
Python单体模式的几种常见实现方法详解
2017/07/28 Python
Python 打印中文字符的三种方法
2018/08/14 Python
Python3自动签到 定时任务 判断节假日的实例
2018/11/13 Python
在python中利用KNN实现对iris进行分类的方法
2018/12/11 Python
详解Flask前后端分离项目案例
2020/07/24 Python
药学专业大学生个人的自我评价
2013/11/04 职场文书
数控技校生自我鉴定
2014/04/19 职场文书
2014年最新大专生职业生涯规划书范文
2014/09/13 职场文书
政协会议宣传标语
2014/10/09 职场文书
高考学习决心书
2015/02/04 职场文书
党员自我评价2015
2015/03/03 职场文书
企业团队精神心得体会
2016/01/19 职场文书