原生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和ACCESS写聊天室(四)
Oct 09 PHP
解决中英文字符串长度问题函数
Jan 16 PHP
PHP 读取大文件的X行到Y行内容的实现代码
Jun 24 PHP
php中的mongodb select常用操作代码示例
Sep 06 PHP
初识Laravel
Oct 30 PHP
Zend Framework实现将session存储在memcache中的方法
Mar 22 PHP
[原创]smarty简单模板变量输出方法
Jul 09 PHP
微信网页授权(OAuth2.0) PHP 源码简单实现
Aug 29 PHP
PHP对象链式操作实现原理分析
Oct 09 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
Jul 21 PHP
Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
Oct 11 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
Nov 19 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
discuz Passport 通行证 整合笔记
2008/06/30 PHP
ajax 的post方法实例(带循环)
2011/07/04 PHP
了解PHP的返回引用和局部静态变量
2015/06/04 PHP
laravel Task Scheduling(任务调度)在windows下的使用详解
2019/10/22 PHP
jQuery选中select控件 无法设置selected的解决方法
2010/09/01 Javascript
jQuery调用WebService的实现代码
2011/06/19 Javascript
Express.JS使用详解
2014/07/17 Javascript
jQuery的promise与deferred对象在异步回调中的作用
2016/05/03 Javascript
Angular CLI 安装和使用教程
2017/09/13 Javascript
基于jQuery解决ios10以上版本缩放问题
2017/11/03 jQuery
angular5 httpclient的示例实战
2018/03/12 Javascript
vuejs实现折叠面板展开收缩动画效果
2018/09/06 Javascript
webpack实现一个行内样式px转vw的loader示例
2018/09/13 Javascript
VUE解决微信签名及SPA微信invalid signature问题(完美处理)
2019/03/29 Javascript
Javascript实现秒表计时游戏
2020/05/27 Javascript
Node.js API详解之 readline模块用法详解
2020/05/22 Javascript
简介Python中用于处理字符串的center()方法
2015/05/18 Python
Python生成随机验证码的两种方法
2015/12/22 Python
python3实现TCP协议的简单服务器和客户端案例(分享)
2017/06/14 Python
python 删除列表里所有空格项的方法总结
2018/04/18 Python
Python爬虫抓取代理IP并检验可用性的实例
2018/05/07 Python
tensorflow更改变量的值实例
2018/07/30 Python
python中eval与int的区别浅析
2019/08/11 Python
Python爬虫实现模拟点击动态页面
2020/03/05 Python
python如何安装下载后的模块
2020/07/03 Python
加拿大领先的冒险和户外零售商:Atmosphere
2017/12/19 全球购物
大学四年的个人自我评价
2014/01/14 职场文书
幼儿园教师国培感言
2014/02/02 职场文书
管事部库房保管员岗位职责
2014/02/21 职场文书
小学模范班主任事迹材料
2014/05/13 职场文书
大学生学雷锋活动总结
2014/06/26 职场文书
校运会通讯稿
2015/07/18 职场文书
消防宣传标语大全
2015/08/03 职场文书
仓库管理制度范本
2015/08/04 职场文书
医院中层管理人员培训心得体会
2016/01/11 职场文书
2016年百日安全生产活动总结
2016/04/06 职场文书