原生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代码
Dec 06 PHP
php与mysql建立连接并执行SQL语句的代码
Jul 04 PHP
奇怪的PHP引用效率问题分析
Mar 23 PHP
PHP随机生成随机个数的字母组合示例
Jan 14 PHP
一个图片地址分解程序(用于PHP小偷程序)
Aug 23 PHP
ThinkPHP中关联查询实例
Dec 02 PHP
php将access数据库转换到mysql数据库的方法
Dec 24 PHP
PHP SPL标准库之数据结构栈(SplStack)介绍
May 12 PHP
Yii CGridView用法实例详解
Jul 12 PHP
详谈php静态方法及普通方法的区别
Oct 04 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
Jun 16 PHP
PHP Trait功能与用法实例分析
Jun 03 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
DC四月将推出百页特刊漫画 纪念小丑诞生80周年
2020/04/09 欧美动漫
php中定义网站根目录的常用方法
2010/08/08 PHP
php ctype函数中文翻译和示例
2014/03/21 PHP
PHP精确计算功能示例
2016/11/29 PHP
PHP判断文件是否被引入的方法get_included_files用法示例
2016/11/29 PHP
struts2 jquery 打造无限层次的树
2009/10/23 Javascript
基于JQuery的Pager分页器实现代码
2010/07/17 Javascript
使用jQuery操作Cookies的实现代码
2011/10/09 Javascript
终于解决了IE8不支持数组的indexOf方法
2013/04/03 Javascript
用Jquery重写windows.alert方法实现思路
2013/04/03 Javascript
jquery $.each() 使用小探
2013/08/23 Javascript
Egret引擎开发指南之视觉编程
2014/09/03 Javascript
JavaScript中的无阻塞加载性能优化方案
2014/10/10 Javascript
jQuery实用技巧必备(下)
2015/11/03 Javascript
JavaScript基础篇(3)之Object、Function等引用类型
2015/11/30 Javascript
JavaScript 节流函数 Throttle 详解
2016/07/04 Javascript
浅谈 Vue v-model指令的实现原理
2017/06/08 Javascript
详解Vue 方法与事件处理器
2017/06/20 Javascript
vue 本地环境跨域请求proxyTable的方法
2018/09/19 Javascript
详解js创建对象的几种方式和对象方法
2021/03/01 Javascript
[01:03:56]Mineski vs TNC 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
Python实现的几个常用排序算法实例
2014/06/16 Python
python win32 简单操作方法
2017/05/25 Python
Python数据分析之如何利用pandas查询数据示例代码
2017/09/01 Python
使用Python的Django和layim实现即时通讯的方法
2018/05/25 Python
Python中staticmethod和classmethod的作用与区别
2018/10/11 Python
详解Python 调用C# dll库最简方法
2019/06/20 Python
基于css3的属性transition制作菜单导航效果
2015/09/01 HTML / CSS
法国二手手袋、手表和奢侈珠宝购物网站:Collector Square
2018/07/05 全球购物
美国领先的眼镜和太阳镜在线零售商:Glasses.com
2019/08/26 全球购物
领导证婚人证婚词
2014/01/13 职场文书
20年同学聚会感言
2014/02/03 职场文书
苦儿流浪记读书笔记
2015/07/01 职场文书
2015年校本培训工作总结
2015/07/24 职场文书
MongoDB使用profile分析慢查询的步骤
2021/04/30 MongoDB
go web 预防跨站脚本的实现方式
2021/06/11 Golang