原生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 相关文章推荐
5.PHP的其他功能
Oct 09 PHP
基于文本的留言簿
Oct 09 PHP
让PHP开发者事半功倍的十大技巧小结
Apr 20 PHP
php中邮箱地址正则表达式实现与详解
Apr 24 PHP
PHP调用C#开发的dll类库方法
Jul 28 PHP
yii添删改查实例
Nov 16 PHP
thinkphp命名空间用法实例详解
Dec 30 PHP
PHPCMS忘记后台密码的解决办法
Oct 30 PHP
PHP中trait使用方法详细介绍
May 21 PHP
php基于Redis消息队列实现的消息推送的方法
Nov 28 PHP
PHP中的访问修饰符简单比较
Feb 02 PHP
laravel开发环境homestead搭建过程详解
Jul 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
利用“多说”制作留言板、评论系统
2015/07/14 PHP
php获取一定范围内取N个不重复的随机数
2016/05/28 PHP
PHP那些琐碎的知识点(整理)
2017/05/20 PHP
PHP implode()函数用法讲解
2019/03/08 PHP
phpstudy2020搭建站点的实现示例
2020/10/30 PHP
jQuery的三种$()
2009/12/30 Javascript
javascript中的if语句使用介绍
2013/11/20 Javascript
AngularJS iframe跨域打开内容时报错误的解决办法
2015/01/26 Javascript
jquery实现左右滑动菜单效果代码
2015/08/27 Javascript
JS判断是否在微信浏览器打开的简单实例(推荐)
2016/08/24 Javascript
微信小程序 地图(map)实例详解
2016/11/16 Javascript
深入理解JavaScript 参数按值传递
2017/05/24 Javascript
JavaScript实现简单生成随机颜色的方法
2017/09/21 Javascript
js prototype和__proto__的关系是什么
2019/08/23 Javascript
JS插件amCharts实现绘制柱形图默认显示数值功能示例
2019/11/26 Javascript
Vue强制组件重新渲染的方法讨论
2020/02/03 Javascript
vue中activated的用法
2021/01/03 Vue.js
jQuery是用来干什么的 jquery其实就是一个js框架
2021/02/04 jQuery
[42:25]EG vs Spirit Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
python利用MethodType绑定方法到类示例代码
2017/08/27 Python
Python实现破解猜数游戏算法示例
2017/09/25 Python
解决phantomjs截图失败,phantom.exit位置的问题
2018/05/17 Python
Python中创建二维数组
2018/10/17 Python
Python数据类型之Tuple元组实例详解
2019/05/08 Python
Appium+python自动化怎么查看程序所占端口号和IP
2019/06/14 Python
使用Windows批处理和WMI设置Python的环境变量方法
2019/08/14 Python
Pytorch实现基于CharRNN的文本分类与生成示例
2020/01/08 Python
python使用ctypes调用扩展模块的实例方法
2020/01/28 Python
将数据集制作成VOC数据集格式的实例
2020/02/17 Python
django项目中使用云片网发送短信验证码的实现
2021/01/19 Python
遮罩层 + Iframe实现界面自动显示的示例代码
2020/04/26 HTML / CSS
德国高性价比网上药店:medpex
2017/07/09 全球购物
档案检查欢迎词
2014/01/13 职场文书
计算机专业毕业生自荐书
2014/06/02 职场文书
2015年南京大屠杀纪念日活动总结
2015/03/24 职场文书
Java并发编程之详解CyclicBarrier线程同步
2021/06/23 Java/Android