原生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 相关文章推荐
IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例(已经完成)
Dec 06 PHP
php max_execution_time执行时间问题
Jul 17 PHP
基于wordpress主题制作的具体实现步骤
May 10 PHP
php中Ctype函数用法详解
Dec 09 PHP
Laravel 5 框架入门(三)
Apr 09 PHP
PHP实现补齐关闭的HTML标签
Mar 22 PHP
php处理json格式数据经典案例总结
May 19 PHP
PHP结合Ueditor并修改图片上传路径
Oct 16 PHP
DWZ+ThinkPHP开发时遇到的问题分析
Dec 12 PHP
php微信公众号开发(2)百度BAE搭建和数据库使用
Dec 15 PHP
PHP实现的用户注册表单验证功能简单示例
Feb 25 PHP
PHP正则之正向预查与反向预查讲解与实例
Apr 06 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
DIY实用性框形天线
2021/03/02 无线电
浅析memcache启动以及telnet命令详解
2013/06/28 PHP
从零开始学YII2框架(五)快速生成代码工具 Gii 的使用
2014/08/20 PHP
yii2控制器Controller Ajax操作示例
2016/07/23 PHP
全面解析JS字符串和正则表达式中的match、replace、exec等函数
2016/07/01 Javascript
json格式的javascript对象用法分析
2016/07/04 Javascript
JS添加删除DIV的简单实例
2016/07/08 Javascript
js实现目录链接,内容跟着目录滚动显示的简单实例
2016/10/15 Javascript
详解js运算符单竖杠“|”与“||”的用法和作用介绍
2016/11/04 Javascript
js简单正则验证汉字英文及下划线的方法
2016/11/28 Javascript
jQuery使用Layer弹出层插件闪退问题
2016/12/22 Javascript
Bootstrap表单使用方法详解
2017/02/17 Javascript
VUE开发一个图片轮播的组件示例代码
2017/03/06 Javascript
微信小程序 动态绑定事件并实现事件修改样式
2017/04/13 Javascript
jQuery条件分页 代替离线查询(附代码)
2017/08/17 jQuery
对angular 实时更新模板视图的方法$apply详解
2018/10/09 Javascript
使用jQuery如何写一个含验证码的登录界面
2019/05/13 jQuery
[01:20:47]DOTA2-DPC中国联赛 正赛 Ehome vs Magma BO3 第一场 1月19日
2021/03/11 DOTA
浅析Python中的多重继承
2015/04/28 Python
一张图带我们入门Python基础教程
2017/02/05 Python
[原创]Python入门教程1. 基本运算【四则运算、变量、math模块等】
2018/10/28 Python
深入了解Python 方法之类方法 &amp; 静态方法
2020/08/17 Python
Pycharm新手使用教程(图文详解)
2020/09/17 Python
HTML5+CSS3 诱人的实例:3D立方体旋转动画实例
2016/12/30 HTML / CSS
HTML5图片预览实例分享
2014/06/04 HTML / CSS
美国一站式电动和手动工具商店:International Tool
2020/11/26 全球购物
英文导游欢迎词
2014/01/11 职场文书
班主任对学生的评语
2014/04/26 职场文书
节约用水标语
2014/06/11 职场文书
授权委托书
2014/07/31 职场文书
学习十八大的心得体会
2014/09/01 职场文书
2015年党风廉政承诺书
2015/01/22 职场文书
回复函格式及范文
2015/07/14 职场文书
读《教育心理学》心得体会
2016/01/22 职场文书
Python多线程实用方法以及共享变量资源竞争问题
2022/04/12 Python
mysql使用FIND_IN_SET和group_concat两个方法查询上下级机构
2022/04/20 MySQL