原生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 正则表达式小结
Aug 31 PHP
PHP 读取文件内容代码(txt,js等)
Dec 06 PHP
PHP中防止SQL注入攻击和XSS攻击的两个简单方法
Apr 15 PHP
php中json_decode()和json_encode()的使用方法
Jun 04 PHP
php中is_null,empty,isset,unset 的区别详细介绍
Apr 28 PHP
Codeigniter注册登录代码示例
Jun 12 PHP
PHP清除字符串中所有无用标签的方法
Dec 01 PHP
Yii清理缓存的方法
Jan 06 PHP
php微信开发自定义菜单
Aug 27 PHP
PHPCMS手机站伪静态设置详细教程
Feb 06 PHP
PHP实现将多个文件中的内容合并为新文件的方法示例
Jun 10 PHP
PHP生成图表pChart的示例解析
Jul 31 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下使用无限生命期Session的方法
2007/03/16 PHP
Yii2 输出xml格式数据的方法
2016/05/03 PHP
基于PHP实现短信验证码接口(容联运通讯)
2016/09/06 PHP
PHP中字符与字节的区别及字符串与字节转换示例
2016/10/15 PHP
php生成静态页面并实现预览功能
2019/06/27 PHP
laravel7学习之无限级分类的最新实现方法
2020/09/30 PHP
jquery 表格分页等操作实现代码(pagedown,pageup)
2010/04/11 Javascript
基于jquery的多彩百分比 动态进度条 投票效果显示效果实现代码
2011/08/28 Javascript
利用jQuery简单实现产品展示图片左右滚动功能(示例代码)
2014/01/02 Javascript
js判断ie版本号的简单实现代码
2014/03/05 Javascript
用js传递value默认值的示例代码
2014/09/11 Javascript
AngularJS入门教程之Hello World!
2014/12/06 Javascript
Javascript中3个需要注意的运算符
2015/04/02 Javascript
yarn与npm的命令行小结
2016/10/20 Javascript
微信小程序 tabs选项卡效果的实现
2017/01/05 Javascript
基于jQuery实现图片推拉门动画效果的两种方法
2017/08/26 jQuery
通过vue提供的keep-alive减少对服务器的请求次数
2018/04/01 Javascript
如何使用less实现随机下雪动画详解
2019/01/02 Javascript
JavaScript实现随机点名器实例详解
2019/05/07 Javascript
vue获取form表单的值示例
2019/10/29 Javascript
jQuery实现弹幕特效
2019/11/29 jQuery
JS实现关闭小广告特效
2021/01/29 Javascript
Vue过渡效果之CSS过渡详解(结合transition,animation,animate.css)
2020/02/05 Javascript
布同自制Python函数帮助查询小工具
2011/03/13 Python
python基础教程之匿名函数lambda
2017/01/17 Python
python随机生成库faker库api实例详解
2019/11/28 Python
利用 PyCharm 实现本地代码和远端的实时同步功能
2020/03/23 Python
python3.6.8 + pycharm + PyQt5 环境搭建的图文教程
2020/06/11 Python
css3 pointer-events 介绍详解
2017/09/18 HTML / CSS
《金子》教学反思
2014/04/13 职场文书
募捐倡议书
2014/04/14 职场文书
操行评语大全
2014/04/30 职场文书
银行求职自荐书
2014/06/25 职场文书
2015年12.4全国法制宣传日活动总结
2015/03/24 职场文书
《仙剑客栈2》第一弹正式宣传片公开 年内发售
2022/04/07 其他游戏
Go语言怎么使用变长参数函数
2022/07/15 Golang