原生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 循环列出目录内容的函数代码
May 26 PHP
php中计算程序运行时间的类代码
Nov 03 PHP
适用于初学者的简易PHP文件上传类
Oct 29 PHP
深入理解PHP之OpCode原理详解
Jun 01 PHP
php判断手机浏览还是web浏览,并执行相应的动作简单实例
Jul 28 PHP
PHP简单判断手机设备的方法
Aug 23 PHP
微信第三方登录(原生)demo【必看篇】
May 26 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
Dec 21 PHP
PHP-FPM的配置与优化讲解
Mar 15 PHP
PHP实现批量修改文件名的方法示例
Sep 18 PHP
PHP常用字符串函数用法实例总结
Jun 04 PHP
PHP7新特性
Mar 09 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去除头尾空格的2种方法
2015/03/16 PHP
Yii2中关联查询简单用法示例
2016/08/10 PHP
JS类的封装及实现代码
2009/12/02 Javascript
JSON辅助格式化处理方法
2013/03/26 Javascript
利用JS实现浏览器的title闪烁
2013/07/08 Javascript
JS测试显示屏分辨率以及屏幕尺寸的方法
2013/11/22 Javascript
原生js实现fadein 和 fadeout淡入淡出效果
2014/06/05 Javascript
JavaScript更改字符串的大小写
2015/05/07 Javascript
使用JQuery实现的分页插件分享
2015/11/05 Javascript
jQuery实现TAB选项卡切换特效简单演示
2016/03/04 Javascript
jquery日历插件e-calendar升级版
2016/11/10 Javascript
微信小程序开发教程-手势解锁实例
2017/01/06 Javascript
js操作浏览器的参数方法
2017/01/21 Javascript
jQuery实现弹窗居中效果类似alert()
2017/02/27 Javascript
微信小程序实现原生步骤条
2019/07/25 Javascript
vue 使用async写数字动态加载效果案例
2020/07/18 Javascript
微信小程序实现点击页面出现文字
2020/09/21 Javascript
antd Select下拉菜单动态添加option里的内容操作
2020/11/02 Javascript
vue的hash值原理也是table切换实例代码
2020/12/14 Vue.js
使用python编写批量卸载手机中安装的android应用脚本
2014/07/21 Python
Python入门篇之对象类型
2014/10/17 Python
在Python的Flask中使用WTForms表单框架的基础教程
2016/06/07 Python
python 简单的绘图工具turtle使用详解
2017/06/21 Python
Django中数据库的数据关系:一对一,一对多,多对多
2018/10/21 Python
python 多线程中子线程和主线程相互通信方法
2018/11/09 Python
python中sort和sorted排序的实例方法
2019/08/26 Python
python3+openCV 获取图片中文本区域的最小外接矩形实例
2020/06/02 Python
维多利亚的秘密官方网站:Victoria’s Secret
2018/10/24 全球购物
南京某软件公司的.net面试题
2015/11/30 面试题
公司中秋节活动方案
2014/02/12 职场文书
环保公益广告语
2014/03/13 职场文书
2016大一新生军训感言
2015/12/08 职场文书
Python List remove()实例用法详解
2021/08/02 Python
详解Oracle块修改跟踪功能
2021/11/07 Oracle
安装Windows Server 2012 R2企业版操作系统并设置好相关参数
2022/04/29 Servers
Pandas实现批量拆分与合并Excel的示例代码
2022/05/30 Python