原生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遍历目录viewDir函数
Dec 15 PHP
php使用多个进程同时控制文件读写示例
Feb 28 PHP
PHP判断是否有Get参数的方法
May 05 PHP
可以保证单词完整性的PHP英文字符串截取代码分享
Jul 15 PHP
PHP基于imap获取邮件实例
Nov 11 PHP
php中实现xml与mysql数据相互转换的方法
Dec 25 PHP
PHP实现的迷你漂流瓶
Jul 29 PHP
php实现带读写分离功能的MySQL类完整实例
Jul 28 PHP
PHP使用栈解决约瑟夫环问题算法示例
Aug 27 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
Dec 30 PHP
让whoops帮我们告别ThinkPHP6的异常页面
Mar 02 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用mb_string函数库处理与windows相关中文字符及Win环境下开启PHP Mb_String方法
2015/11/11 PHP
xtree.js 代码
2007/03/13 Javascript
监控 url fragment变化的js代码
2010/04/19 Javascript
js实现幻灯片播放图片示例代码
2013/11/07 Javascript
AJAX跨域请求json数据的实现方法
2013/11/11 Javascript
iframe里的页面禁止右键事件的方法
2014/06/10 Javascript
在Google 地图上实现做的标记相连接
2015/01/05 Javascript
js给selected添加options的方法
2015/05/06 Javascript
jquery实现动画菜单的左右滚动、渐变及图形背景滚动等效果
2015/08/25 Javascript
javascript html5 canvas实现可拖动省份的中国地图
2016/03/11 Javascript
jQuery中的each()详细介绍(推荐)
2016/05/25 Javascript
jQuery+HTML5+CSS3制作支持响应式布局时间轴插件
2016/08/10 Javascript
js实现浏览器倒计时跳转页面效果
2016/08/12 Javascript
bootstrap动态添加面包屑(breadcrumb)及其响应事件的方法
2017/05/25 Javascript
监听element-ui table滚动事件的方法
2019/03/26 Javascript
详解JavaScript 新语法之Class 的私有属性与私有方法
2019/04/23 Javascript
JS简单数组排序操作示例【sort方法】
2019/05/17 Javascript
利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序
2019/06/07 Javascript
小程序按钮避免多次调用接口和点击方案实现(不用showLoading)
2020/04/15 Javascript
在Vue中使用Echarts可视化库的完整步骤记录
2020/11/18 Vue.js
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
2017/03/16 Python
python合并同类型excel表格的方法
2018/04/01 Python
python中字符串内置函数的用法总结
2018/09/13 Python
Linux 修改Python命令的方法示例
2018/12/03 Python
django 数据库 get_or_create函数返回值是tuple的问题
2020/05/15 Python
Python实现邮件发送的详细设置方法(遇到问题)
2021/01/18 Python
python基于selenium爬取斗鱼弹幕
2021/02/20 Python
详解使用canvas保存网页为pdf文件支持跨域
2018/11/23 HTML / CSS
在DELPHI中调用存储过程和使用内嵌SQL哪种方式更好
2016/11/22 面试题
质量月活动策划方案
2014/03/10 职场文书
销售个人求职信范文
2014/04/28 职场文书
2014年学校国庆主题活动方案
2014/09/16 职场文书
安全生产标语大全
2014/10/06 职场文书
群众路线自查自纠工作情况报告
2014/10/28 职场文书
2015年社区居委会工作总结
2015/05/18 职场文书
springboot+rabbitmq实现智能家居实例详解
2022/07/23 Java/Android