原生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读取和编写XML DOM的实现代码
Feb 03 PHP
php通过数组实现多条件查询实现方法(字符串分割)
May 06 PHP
php中字符集转换iconv函数使用总结
Oct 11 PHP
php多个文件及图片上传实例详解
Nov 10 PHP
php通过修改header强制图片下载的方法
Mar 24 PHP
Yii快速入门经典教程
Dec 28 PHP
php文件缓存方法总结
Mar 16 PHP
Laravel5权限管理方法详解
Jul 26 PHP
Zend Framework数据库操作技巧总结
Feb 18 PHP
使用composer命令加载vendor中的第三方类库 的方法
Jul 09 PHP
PHP实现与java 通信的插件使用教程
Aug 11 PHP
php实现通过stomp协议连接ActiveMQ操作示例
Feb 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获取用户客户端真实IP的解决方案
2016/10/10 PHP
js jquery验证银行卡号信息正则学习
2013/01/21 Javascript
JavaScript转换二进制编码为ASCII码的方法
2015/04/16 Javascript
javascript实现unicode与ASCII相互转换的方法
2015/12/10 Javascript
详细解读Jquery各Ajax函数($.get(),$.post(),$.ajax(),$.getJSON())
2016/08/15 Javascript
AngularJS使用ng-Cloak阻止初始化闪烁问题的方法
2016/11/03 Javascript
js学习总结_轮播图之渐隐渐现版(实例讲解)
2017/07/17 Javascript
基于Vue单文件组件详解
2017/09/15 Javascript
python爬取安居客二手房网站数据(实例讲解)
2017/10/19 Javascript
浅谈vue项目重构技术要点和总结
2018/01/23 Javascript
Vue下路由History模式打包后页面空白的解决方法
2018/06/29 Javascript
webpack4 升级迁移的实现
2018/09/12 Javascript
Element Input组件分析小结
2018/10/11 Javascript
Vue自定义属性实例分析
2019/02/23 Javascript
原生JavaScript实现贪吃蛇游戏
2020/11/04 Javascript
跟老齐学Python之坑爹的字符编码
2014/09/28 Python
Python实现求两个csv文件交集的方法
2017/09/06 Python
解决python xlrd无法读取excel文件的问题
2018/12/25 Python
python实现K近邻回归,采用等权重和不等权重的方法
2019/01/23 Python
python调用私有属性的方法总结
2020/07/24 Python
详解CSS3弹性伸缩盒
2020/09/21 HTML / CSS
美国婴儿和儿童服装购物网站:PatPat
2020/10/01 全球购物
JavaScript获取当前url根目录(路径)
2014/02/19 面试题
审计工作个人的自我评价
2013/12/25 职场文书
小学教师办公室制度
2014/02/03 职场文书
幼儿园六一活动总结
2014/08/27 职场文书
融资合作协议书范本
2014/10/17 职场文书
金融专业银行实习证明模板
2014/11/28 职场文书
2015新教师教学工作总结
2015/07/22 职场文书
股权投资协议书
2016/03/23 职场文书
创业不要错过,这4种餐饮新模式
2019/07/18 职场文书
Python初识逻辑与if语句及用法大全
2021/08/07 Python
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
2021/11/27 Vue.js
ICOM R71E和R72E图文对比解说
2022/04/07 无线电
Mysql 如何合理地统计一个数据库里的所有表的数据量
2022/04/18 MySQL
Nginx利用Logrotate实现日志分割
2022/05/20 Servers