原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】


Posted in PHP onMarch 07, 2019

本文实例讲述了原生PHP实现导出csv格式Excel文件的方法。分享给大家供大家参考,具体如下:

效果图

原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】

源码分析

index.php

<?php
require_once "./Export.php";
//测试数据
$headerList= ['列名1','列名2','列名3'];
$data = [
  ['值1','值2','值3'],
  ['值11','值22','值33'],
  ['值111','值222','值333']
];
$fileName = "测试导出文件名";
$tmp = ['备份字段1','备份值1','','备份字段2','备份值2'];
$export = new Export();
$result = $export->exportToCsv($headerList,$data,$fileName,$tmp);

Export.php

<?php
class export{
  /**
   * params $headerList 头部列表信息(一维数组) 必传
   * params $data 导出的数据(二维数组)  必传
   * params $filename 文件名称转码 必传
   * params $tmp 备用信息(二维数组) 选传
   * PS:出现数字格式化情况,可添加看不见的符号,使其正常,如:"\t"
   **/
  public function exportToCsv($headerList = [] , $data = [] , $fileName = '' , $tmp = []){
    //文件名称转码
    $fileName = iconv('UTF-8', 'GBK', $fileName);
    //设置header头
    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment;filename=' . $fileName . '.csv');
    header('Cache-Control: max-age=0');
    //打开PHP文件句柄,php://output,表示直接输出到浏览器
    $fp = fopen("php://output","a");
    //备用信息
    foreach ($tmp as $key => $value) {
      $tmp[$key] = iconv("UTF-8", 'GBK', $value);
    }
    //使用fputcsv将数据写入文件句柄
    fputcsv($fp, $tmp);
    //输出Excel列表名称信息
    foreach ($headerList as $key => $value) {
      $headerList[$key] = iconv('UTF-8', 'GBK', $value);//CSV的EXCEL支持BGK编码,一定要转换,否则乱码
    }
    //使用fputcsv将数据写入文件句柄
    fputcsv($fp, $headerList);
    //计数器
    $num = 0;
    //每隔$limit行,刷新一下输出buffer,不要太大亦不要太小
    $limit = 100000;
    //逐行去除数据,不浪费内存
    $count = count($data);
    for($i = 0 ; $i < $count ; $i++){
      $num++;
      //刷新一下输出buffer,防止由于数据过多造成问题
      if($limit == $num){
        ob_flush();
        flush();
        $num = 0;
      }
      $row = $data[$i];
      foreach ($row as $key => $value) {
        $row[$key] = iconv('UTF-8', 'GBK', $value);
      }
      fputcsv($fp, $row);
    }
  }
}

附:完整实例代码点击此处本站下载

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP正则的Unknown Modifier错误解决方法
Mar 02 PHP
PHP安全防范技巧分享
Nov 03 PHP
php的$_FILES的临时储存文件与回收机制实测过程
Jul 12 PHP
PHP json_decode函数详细解析
Feb 17 PHP
基于PHP的简单采集数据入库程序【续篇】
Jul 30 PHP
PHP代码实现爬虫记录――超管用
Jul 31 PHP
PHP的Yii框架中YiiBase入口类的扩展写法示例
Mar 17 PHP
PHP的Yii框架中行为的定义与绑定方法讲解
Mar 18 PHP
PHP函数checkdnsrr用法详解(Windows平台用法)
Mar 21 PHP
php打乱数组二维数组多维数组的简单实例
Jun 17 PHP
PHP导出带样式的Excel示例代码
Aug 28 PHP
PHP单元测试框架PHPUnit用法详解
Jan 23 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
Mar 07 #PHP
PHP使用PDO操作sqlite数据库应用案例
Mar 07 #PHP
php使用fullcalendar日历插件详解
Mar 06 #PHP
PHP封装XML和JSON格式数据接口操作示例
Mar 06 #PHP
浅谈PHP封装CURL
Mar 06 #PHP
Yaf框架封装的MySQL数据库操作示例
Mar 06 #PHP
PHP实现的敏感词过滤方法示例
Mar 06 #PHP
You might like
php whois查询API制作方法
2011/06/23 PHP
解析php安全性问题中的:Null 字符问题
2013/06/21 PHP
php使用正则表达式获取图片url的方法
2015/01/16 PHP
laravel框架模型、视图与控制器简单操作示例
2019/10/10 PHP
js 深拷贝函数
2008/12/04 Javascript
学习ExtJS table布局
2009/10/08 Javascript
js 蒙版进度条(结合图片)
2010/03/10 Javascript
IE6下CSS图片缓存问题解决方法
2010/12/09 Javascript
javascript实现焦点滚动图效果 具体方法
2013/06/24 Javascript
js定时器怎么写?就是在特定时间执行某段程序
2013/10/11 Javascript
jquery如何判断某元素是否具备指定的样式
2013/11/05 Javascript
关于Javascript作用域链的八点总结
2013/12/06 Javascript
js弹出div并显示遮罩层
2014/02/12 Javascript
js中的onchange和onpropertychange (onchange无效的解决方法)
2014/03/08 Javascript
js实现的点击数量加一可操作数据库
2014/05/09 Javascript
JavaScript获取按钮所在form表单id的方法
2015/04/02 Javascript
为何JS操作的href都是javascript:void(0);呢
2015/11/12 Javascript
canvas实现图像截取功能
2017/02/06 Javascript
js实现常见的工具条效果
2017/03/02 Javascript
VUE开发一个图片轮播的组件示例代码
2017/03/06 Javascript
使用travis-ci如何持续部署node.js应用详解
2017/07/30 Javascript
BootStrap TreeView使用实例详解
2017/11/01 Javascript
小程序实现授权登陆的解决方案
2018/12/02 Javascript
使用Python中的tkinter模块作图的方法
2017/02/07 Python
face++与python实现人脸识别签到(考勤)功能
2019/08/28 Python
python有序查找算法 二分法实例解析
2020/02/18 Python
520使用Python实现“我爱你”表白
2020/05/20 Python
python从ftp获取文件并下载到本地
2020/12/05 Python
学校采购员岗位职责
2014/01/02 职场文书
公司领导班子对照检查存在问题整改措施
2014/10/02 职场文书
党员评议个人总结
2014/10/20 职场文书
年会邀请函范文
2015/01/30 职场文书
疾病证明书
2015/06/19 职场文书
《语言的突破》读后感3篇
2019/12/12 职场文书
Python自动化测试PO模型封装过程详解
2021/06/22 Python
Python中递归以及递归遍历目录详解
2021/10/24 Python