原生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 相关文章推荐
Discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口
Apr 18 PHP
php5 mysql分页实例代码
Apr 10 PHP
探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解
Jun 20 PHP
mac下安装nginx和php
Nov 04 PHP
php多维数组去掉重复值示例分享
Mar 02 PHP
一个显示效果非常不错的PHP错误、异常处理类
Mar 21 PHP
php集成环境xampp中apache无法启动问题解决方案
Nov 18 PHP
memcache一致性hash的php实现方法
Mar 05 PHP
php获取指定范围内最接近数的方法
Jun 02 PHP
php实现网页缓存的工具类分享
Jul 14 PHP
Laravel路由研究之domain解决多域名问题的方法示例
Apr 04 PHP
YII框架关联查询操作示例
Apr 29 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按行读取文件时删除换行符的3种方法
2014/05/04 PHP
ThinkPHP模板比较标签用法详解
2014/06/30 PHP
PHP将HTML转换成文本的实现代码
2015/01/21 PHP
PHP中如何使用session实现保存用户登录信息
2015/10/20 PHP
Android App中DrawerLayout抽屉效果的菜单编写实例
2016/03/21 PHP
PHP静态延迟绑定和普通静态效率的对比
2017/10/20 PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
2017/12/28 PHP
jquery统计复选框选中示例
2013/11/05 Javascript
Jquery 获取指定标签的对象及属性的设置与移除
2014/05/29 Javascript
jQuery中html()方法用法实例
2014/12/25 Javascript
javascript 兼容各个浏览器的事件
2015/02/04 Javascript
基于Bootstrap的标签页组件及bootstrap-tab使用说明
2017/07/25 Javascript
jquery中done和then的区别(详解)
2017/12/19 jQuery
Angular5中提取公共组件之radio list的实例代码
2018/07/10 Javascript
Vue2.5学习笔记之如何在项目中使用和配置Vue
2018/09/26 Javascript
微信小程序的开发范式BeautyWe.js入门详解
2019/07/10 Javascript
Vue 实现把表单form数据 转化成json格式的数据
2019/10/29 Javascript
ant-design-vue 快速避坑指南(推荐)
2020/01/21 Javascript
javascript实现留言板功能
2020/02/08 Javascript
[38:32]完美世界DOTA2联赛循环赛 Forest vs DM 第二场 11.06
2020/11/06 DOTA
python生成器与迭代器详解
2019/01/01 Python
Python使用import导入本地脚本及导入模块的技巧总结
2019/08/07 Python
python智联招聘爬虫并导入到excel代码实例
2019/09/09 Python
python GUI库图形界面开发之PyQt5滚动条控件QScrollBar详细使用方法与实例
2020/03/06 Python
python统计mysql数据量变化并调用接口告警的示例代码
2020/09/21 Python
CSS3的RGBA中关于整数和百分比值的转换
2015/08/04 HTML / CSS
AmazeUI 折叠面板的实现代码
2020/08/17 HTML / CSS
印度网上购物首选目的地:Flipkart
2016/08/01 全球购物
葡萄牙语专业个人求职信
2013/12/10 职场文书
水果连锁超市创业计划书
2014/01/24 职场文书
安全生产一岗双责责任书
2014/07/28 职场文书
党支部2014年度工作总结
2014/12/04 职场文书
红与黑读书笔记
2015/06/29 职场文书
MySQL数据库中varchar类型的数字比较大小的方法
2021/11/17 MySQL
iOS 16进一步确认,一共支持16款iPhone
2022/04/28 数码科技
python如何读取和存储dict()与.json格式文件
2022/06/25 Python