Yii2 框架 导出excel表格类
时间:2020-05-28
本文章向大家介绍Yii2 框架 导出excel表格类,主要包括Yii2 框架 导出excel表格类使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
使用这个类前,需安装PHPExcel库,安装教程可参考:https://www.cnblogs.com/JahanGu/p/8039021.html
导出excel类:
<?php /* * 导出表格 */ namespace common\utils; class OutputExecl { /* * 导出execl * headerData 表头信息 形如 array('A1'=>'编号','B1'=>'会员ID','C1'=>'电话'); * data 导入数据 这个要与表头顺序一致 * 返回一个execl下载地址 */ public function output($headData,$data,$filename='') { $objPHPExcel = new \PHPExcel(); //设置表头的信息 $headObj = $objPHPExcel->setActiveSheetIndex(0); foreach($headData as $key=>$val) { $headObj->setCellValue($key,$val); } $i=2; //写入数据 $contentObj = $objPHPExcel->getActiveSheet(); $listks = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'); foreach ($data as $key => $value) { $l = 0; foreach($value as $val) { //给表的单元格设置数据 $contentObj->setCellValue($listks[$l].$i,$val); $l++; } $i++; } //设置sheet页标题 $objPHPExcel->getActiveSheet()->setTitle('表格导出数据'); $objPHPExcel->setActiveSheetIndex(0); if(!$filename) $filename = time().rand(1000,9999).'.xls'; $dir = '/data/execl/'; $basePath = $_SERVER['DOCUMENT_ROOT']; if(!is_dir($basePath.$dir)) mkdir($basePath.$dir,0777,true); $dirFile = $dir.$filename; //1,直接生成一个文件 $objWriter =\PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); $objWriter->save( $basePath.$dirFile); $host = \Yii::$app->request->hostInfo; return $host.$dirFile; } }
调用:
//组织导出数据 $exportData = array(); foreach($list as $val) { $temp = []; $temp[] = $val['member_id']; $temp[] = $val['member_name']; $temp[] = $val['member_mobile']; $temp[] = $val['state']?'正常':'冻结'; $temp[] = date("Y-m-d H:i:s",$val['create_time']); $exportData[] = $temp; } $headData = array('A1'=>'会员ID','B1'=>'会员姓名','C1'=>'会员电话','D1'=>'会员状态','E1'=>'注册时间'); $fileName = 'member-'.date('Y-m-d').'.xls'; $execlObj = new OutputExecl(); $res = $execlObj->output($headData,$exportData,$fileName); if($res) $this->out('下载地址',array('url'=>$res)); else $this->error('导出失败');
原文地址:https://www.cnblogs.com/jackzhuo/p/12980229.html
- R语言与机器学习学习笔记(分类算法
- 54. 心跳的实现 | 厚土Go学习笔记
- 通过错误的sql来测试推理sql的解析过程(二) (r8笔记第7天)
- 53. Socket服务三次握手的示例 | 厚土Go学习笔记
- R分词继续,"不|知道|你在|说|什么"分词添加新词
- Java开发Spring第一天
- 关于R安装中文分词包安装不上的问题install.packages("tm")
- dataguard备库的数据文件的迁移实战(r8笔记第24天)
- Hive的left join、left outer join和left semi join三者的区别
- 52. Socket Server 自定义协议的简单实现 | 厚土Go学习笔记
- dataguard备库的数据文件的迁移(r8笔记第22天)
- 46. 实现一个简单的网络爬虫 | 厚土Go学习笔记
- 45. sync.Mutex 互斥和互斥锁 | 厚土Go学习笔记
- golang进度条
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 图书管理系统(Servlet+Jsp+Java+Mysql,附下载演示地址)
- Vuex 映射完全指南
- 我们是如何改进YOLOv3进行红外小目标检测的?
- Unity3D网络通讯(三)-- HttpRestful请求的简单封装
- 详解Elasticsearch 的性能优化
- console.log的那件事
- Codeforces Round #668 (Div. 2)A-D
- nodejs源码解析之udp服务器
- LeetCode | 35.搜索插入位置
- Redis | 源码阅读 —— 字符串
- 一个小白的角度看JavaScript Promise 完整指南
- 教会舍友玩 Git (再也不用担心他的学习)
- Python极简入门:数据类型、条件语句、循环语句、异常处理
- 手把手带你入门Python爬虫Scrapy
- 工作中巧用了这几个设计模式重构代码,女同事直呼666