原生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 相关文章推荐
自动跳转中英文页面
Oct 09 PHP
php 获取当前访问的url文件名的方法小结
Feb 08 PHP
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
Dec 19 PHP
深入apache host的配置详解
Jun 09 PHP
ueditor 1.2.6 使用方法说明
Jul 24 PHP
PHP按行读取、处理较大CSV文件的代码实例
Apr 09 PHP
ThinkPHP实现一键清除缓存方法
Jun 26 PHP
启用Csrf后POST数据时出现的400错误
Jul 05 PHP
PHP使用Pthread实现的多线程操作实例
Nov 14 PHP
php使用curl伪造来源ip和refer的方法示例
May 08 PHP
PHP convert_uudecode()函数讲解
Feb 14 PHP
PHP rmdir()函数的用法总结
Jul 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验证手机号码(支持归属地查询及编码为UTF8)
2013/02/01 PHP
ThinkPHP3.1的Widget新用法
2014/06/19 PHP
PPK 谈 JavaScript 的 this 关键字 [翻译]
2009/09/29 Javascript
JS对HTML标签select的获取、添加、删除操作
2013/10/17 Javascript
js导入导出excel(实例代码)
2013/11/25 Javascript
使用jquery中height()方法获取各种高度大全
2014/04/02 Javascript
文本框倒叙输入让输入框的焦点始终在最开始的位置
2014/09/01 Javascript
JavaScript实现点击单选按钮改变输入框中文本域内容的方法
2015/08/12 Javascript
JS使用cookie实现DIV提示框只显示一次的方法
2015/11/05 Javascript
Javascrip实现文字跳动特效
2016/11/27 Javascript
js实现消息滚动效果
2017/01/18 Javascript
vue2.0数据双向绑定与表单bootstrap+vue组件
2017/02/27 Javascript
VueJs 将接口用webpack代理到本地的方法
2017/11/27 Javascript
AngularJs点击状态值改变背景色的实例
2017/12/18 Javascript
在vue项目中使用md5加密的方法
2018/09/14 Javascript
使用electron将vue-cli项目打包成exe的方法
2018/09/29 Javascript
vue css 引入asstes中的图片无法显示的四种解决方法
2020/03/16 Javascript
[04:42]5分钟带你了解什么是DOTA2(第一期)
2017/02/07 DOTA
用Python编写一个简单的Lisp解释器的教程
2015/04/03 Python
Python shutil模块用法实例分析
2019/10/02 Python
Flask之pipenv虚拟环境的实现
2019/11/26 Python
tensorflow:指定gpu 限制使用量百分比,设置最小使用量的实现
2020/02/06 Python
Python通过len函数返回对象长度
2020/10/22 Python
canvas 实现 github404动态效果的示例代码
2017/11/15 HTML / CSS
莫斯科高科技在线商店:KremlinStore
2019/03/13 全球购物
计算机专业毕业生求职信分享
2013/12/24 职场文书
计算机大学生职业生涯规划书范文
2014/02/19 职场文书
小学清明节活动方案
2014/03/08 职场文书
机电职业生涯规划书范文
2014/03/08 职场文书
作风整顿个人剖析材料
2014/10/06 职场文书
务虚会发言材料
2014/12/25 职场文书
员工离职通知函
2015/04/25 职场文书
大学生社会实践活动总结报告
2015/05/06 职场文书
党员转正申请报告
2015/05/15 职场文书
2019年二手房买卖合同范本
2019/10/14 职场文书
导游词之阳朔遇龙河
2019/12/16 职场文书