原生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开发文件系统实例讲解
Oct 09 PHP
用PHP查询域名状态whois的类
Nov 25 PHP
php桌面中心(一) 创建数据库
Mar 11 PHP
奇怪的PHP引用效率问题分析
Mar 23 PHP
基于PHP选项与信息函数的使用详解
May 10 PHP
php 生成短网址原理及代码
Jan 23 PHP
PHP连接SQLServer2005的方法
Jan 27 PHP
php实现小程序支付完整版
Oct 09 PHP
PHP获取远程http或ftp文件的md5值的方法
Apr 15 PHP
php解决安全问题的方法实例
Sep 19 PHP
Laravel 不同生产环境服务器的判断实践
Oct 15 PHP
Laravel 模型使用软删除-左连接查询-表起别名示例
Oct 24 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 print EOF实现方法
2009/05/21 PHP
在smarty中调用php内置函数的方法
2013/02/07 PHP
PHP使用glob函数遍历目录或文件夹的方法
2014/12/16 PHP
总结PHP中DateTime的常用方法
2016/08/11 PHP
php实现文件预览功能
2017/05/23 PHP
Prototype Selector对象学习
2009/07/23 Javascript
ext 代码生成器
2009/08/07 Javascript
JavaScript 内置对象属性及方法集合
2010/07/04 Javascript
父页面显示遮罩层弹出半透明状态的dialog
2014/03/04 Javascript
Nodejs异步回调的优雅处理方法
2014/09/25 NodeJs
浅谈javascript中的constructor
2016/06/08 Javascript
浅谈bootstrap layer.open中end的使用方法
2019/09/12 Javascript
浅谈vue项目用到的mock数据接口的两种方式
2019/10/09 Javascript
JS如何判断对象是否包含某个属性
2020/08/29 Javascript
vue 二维码长按保存和复制内容操作
2020/09/22 Javascript
python select.select模块通信全过程解析
2017/09/20 Python
python调用Delphi写的Dll代码示例
2017/12/05 Python
对numpy的array和python中自带的list之间相互转化详解
2018/04/13 Python
对python中两种列表元素去重函数性能的比较方法
2018/06/29 Python
Python中Numpy mat的使用详解
2019/05/24 Python
用Pelican搭建一个极简静态博客系统过程解析
2019/08/22 Python
Python实现投影法分割图像示例(一)
2020/01/17 Python
在keras中对单一输入图像进行预测并返回预测结果操作
2020/07/09 Python
Python __slots__的使用方法
2020/11/15 Python
英国电信商店:BT Shop
2019/12/17 全球购物
校园自助餐厅的创业计划书
2013/12/26 职场文书
顶岗实习接收函
2014/01/09 职场文书
大学生通用个人的自我评价
2014/02/10 职场文书
幼儿园中班区域活动总结
2014/07/09 职场文书
党员查摆四风问题思想汇报
2014/10/25 职场文书
青年岗位能手事迹材料
2014/12/23 职场文书
2015教师年度工作总结范文
2015/04/07 职场文书
入党积极分子培养人意见
2015/06/02 职场文书
2015年团委副书记工作总结
2015/07/23 职场文书
如何书写先进事迹材料?
2019/07/02 职场文书
读《钢铁是怎样炼成的》有感:百炼方成钢
2019/11/05 职场文书