tp5 excel导出类
1.引入Loader
use think\Loader;
2.导出方法:
/** * excel表格导出
* @param string $fileName 文件名称
* @param array $headArr 表头名称
* @param array $data 要导出的数据
* @author static7 */ function excelExport($fileName = '', $headArr = [], $data = [], $widths=[]) {
$fileName = iconv("UTF-8", "GB2312//IGNORE", @$fileName);
$fileName .=".xls";
Loader::import('PHPExcel.PHPExcel');
Loader::import('PHPExcel.PHPExcel.IOFactory.PHPExcel_IOFactory');
$objPHPExcel = new \PHPExcel();
$objPHPExcel->getProperties();
$ordA = ord('A'); //
$key2 = ord("@"); //
foreach ($headArr as $v) {
if($ordA > ord("Z"))
{
$colum = chr(ord("A")).chr(++$key2);//超过26个字母 AA1,AB1,AC1,AD1...BA1,BB1...
}else{
$colum = chr($ordA++);
}
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '1', $v);
}
$column = 2;
$objActSheet = $objPHPExcel->getActiveSheet();
foreach ($data as $key => $rows) { // 行写入
$ordA = ord('A');//重新从A开始
$key2 = ord("@"); //
foreach ($rows as $keyName => $value) { // 列写入
if($ordA > ord("Z"))
{
$colum = chr(ord("A")).chr(++$key2);//超过26个字母 AA1,AB1,AC1,AD1...BA1,BB1...
}else{
$colum = chr($ordA++);
}
$objActSheet->setCellValue($colum . $column, $value);
}
$column++;
}
//表格宽度
if(count($widths)){
$ordA = ord('A');//重新从A开始
$key2 = ord("@"); //
foreach ($widths as $value) { // 列写入
if($ordA > ord("Z"))
{
$colum = chr(ord("A")).chr(++$key2);//超过26个字母 AA1,AB1,AC1,AD1...BA1,BB1...
}else{
$colum = chr($ordA++);
}
$objActSheet->getColumnDimension($colum)->setWidth($value);
}
}
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
//$objWriter->save('./excelFile/'.$fileName);
header('Content-Type: application/vnd.ms-excel');//告诉浏览器将要输出excel03文件
header('Content-Disposition: attachment;filename="'.$fileName.'"');//告诉浏览器将输出文件的名称(文件下载)
header('Cache-Control: max-age=0');//禁止缓存
$objWriter->save("php://output");
}
3.调用
//整理显示数据
$data[$k]['seller']=Db::table('ims_bj_shopn_member')->where('id',$v['staffid'])->value('realname');
$data[$k]['sign']=$v['sign'];
$data[$k]['title']=$v['title'];
$data[$k]['bsc']=Db::table('sys_departbeauty_relation')->alias('r')->join(['sys_department' => 'd'],'r.id_department=d.id_department','left')->where('r.id_beauty',$v['storeid'])->value('d.st_department');
$data[$k]['order_sn']="\t".$v['order_sn']."\t";
$data[$k]['p_name']=$v['p_name'];
$data[$k]['p_price']=$v['tuan_price'];
$data[$k]['insert_time']=date('Y-m-d H:i:s',$v['insert_time']);
$data[$k]['success_time']=date('Y-m-d H:i:s',$v['success_time']);
$data[$k]['status']=$statusText;
$data[$k]['fqr_pay']=$sonList[0]['pay_price'];
$data[$k]['fqr_tel']=$sonList[0]['mobile'];
$data[$k]['cantuan1']=$sonList[1]['realname'];
$data[$k]['cantuan1_tel']=$sonList[1]['mobile'];
$data[$k]['cantuan1_pay']=$sonList[1]['mobile']?$sonList[1]['pay_price']:'';
$data[$k]['cantuan1_num']=$sonList[1]['join_num'];
$data[$k]['cantuan2']=$sonList[2]['realname'];
$data[$k]['cantuan2_tel']=$sonList[2]['mobile'];
$data[$k]['cantuan2_pay']=$sonList[2]['mobile']?$sonList[2]['pay_price']:'';
$data[$k]['cantuan2_num']=$sonList[2]['join_num'];;
$data[$k]['cantuan3']=$sonList[3]['realname'];
$data[$k]['cantuan3_tel']=$sonList[3]['mobile'];
$data[$k]['cantuan3_pay']=$sonList[3]['mobile']?$sonList[3]['pay_price']:'';
$data[$k]['cantuan3_num']=$sonList[3]['join_num'];;
$searchOrder=Db::name('tuan_list')->where(['create_uid'=>$v['create_uid'],'status'=>2])->whereTime('begin_time', '<', $v['begin_time'])->count();
$data[$k]['is_first']=$searchOrder?0:1;
$data[$k]['number']=$join_num;
$seaMap['list.create_uid']=array('neq',$v['create_uid']);
$seaMap['list.status']=array('eq',2);
$seaMap['list.order_sn']=array('neq',$v['order_sn']);
$seaMap['order.uid']=array('eq',$v['create_uid']);
$searchJoinOrder=Db::name('tuan_order')->alias('order')->join('tuan_list list','order.parent_order=list.order_sn','left')->where($seaMap)->whereTime('order.insert_time', '<', $v['begin_time'])->count();
$data[$k]['is_join']=$searchJoinOrder?1:0;
//调用导出
$filename = "拼团订单列表".date('YmdHis');
$header = array ('活动发起人','所属美容师','所属门店编码','所属门店名称','所属办事处','拼购单号','拼购商品','商品总价','发起时间','成团时间','拼购状态','发起人支付金额','发起人手机号码','参团人1','手机号码','支付金额','参团人1拓客留客','参团人2','手机号码','支付金额','参团人2拓客留客','参团人3','手机号码','支付金额','参团人3拓客留客','发起人是否首次发起','参团人数','是否参加过拼团');
$widths=array('15','20','20','30','30','30','60','10','20','20','20','20','20','20','20','20','20','20','20','20','20','20','20','20','20','20','20','20');
if($data) {
excelExport($filename, $header, $data, $widths);//生成数据
}
tp5 excel导出类的更多相关文章
- asp.net(C#) Excel导出类 导出.xls文件
---恢复内容开始--- using Microsoft.Office.Interop.Excel; 针对office 2003需添加引用Microsoft Excel 11.0 Obje ...
- 并发编程概述 委托(delegate) 事件(event) .net core 2.0 event bus 一个简单的基于内存事件总线实现 .net core 基于NPOI 的excel导出类,支持自定义导出哪些字段 基于Ace Admin 的菜单栏实现 第五节:SignalR大杂烩(与MVC融合、全局的几个配置、跨域的应用、C/S程序充当Client和Server)
并发编程概述 前言 说实话,在我软件开发的头两年几乎不考虑并发编程,请求与响应把业务逻辑尽快完成一个星期的任务能两天完成绝不拖三天(剩下时间各种浪),根本不会考虑性能问题(能接受范围内).但随着工 ...
- tp5 Excel导出
1.百度搜索 PHPexcel (这是一个PHP类库) 2.下载的文件放到vendor里(这是tp5专门放置类库文件的) 下面是代码 /** * 导出 */ public function expor ...
- C# 实现NPOI的Excel导出
技术点: 1.自定义attribute属性 2.通过反射取类及其属性的attribute属性值 3.NPOI包常用属性及方法(我也仅仅知道用到过的,陌生的要么见名知意,要么百度查) 实现功能点: Li ...
- TP5.0源生Excel导出
PHPExcel类在TP5里边并不能很好的兼容,使用起来很麻烦. 不像是tp3.2那样直接import()加进来就能new,因为它里边的命名空间找不到.总是说undefined class. 如果是使 ...
- 偷懒小工具 - Excel导出公共类
说明 最近接了一个任务,就是做一个列表的Excel导出功能.并且有很多页面都会使用这个功能. 导出的Excel大体格式如图 很简单的列表,标题加背景色,然后不同类型,显示方式不一样.对齐方式不一样.不 ...
- 导入导出Excel工具类ExcelUtil
前言 前段时间做的分布式集成平台项目中,许多模块都用到了导入导出Excel的功能,于是决定封装一个ExcelUtil类,专门用来处理Excel的导入和导出 本项目的持久化层用的是JPA(底层用hibe ...
- 自己写的java excel导出工具类
最近项目要用到excel导出功能,之前也写过类似的代码.因为这次项目中多次用到excel导出.这次长了记性整理了一下 分享给大伙 欢迎一起讨论 生成excel的主工具类: public class E ...
- MVC NPOI Linq导出Excel通用类
之前写了一个模型导出Excel通用类,但是在实际应用中,可能不是直接导出模型,而是通过Linq查询后获取到最终结果再导出 通用类: public enum DataTypeEnum { Int = , ...
随机推荐
- Day 04 列表,元祖,range
列表: why: 1.字符串取值费劲 2.对字符串做任何操作,取出来的都是字符串 3.字符串有长度限制 基于以上原因,python提供了另一个数据类型,list 容器类数据类型. 列表页脚数组,可以存 ...
- Linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结(转)
本文介绍了linux下的压缩程式tar.gzip.gunzip.bzip2.bunzip2.compress .uncompress. zip. unzip.rar.unrar等程式,以及如何使用它们 ...
- DMZ原理与应用
DMZ是英文“demilitarized zone”的缩写,中文名称为“隔离区”,“非军事化区”.它是为了解决安装防火墙后外部网络不能访问内部网络服务器的问题,而设立的一个非安全系统与安全系统之间的缓 ...
- SQL truncate 、delete与drop区别[z]
[z]https://www.cnblogs.com/8765h/archive/2011/11/25/2374167.html 相同点: 1.truncate和不带where子句的delete.以及 ...
- 操作系统之CPU管理的直观想法
计算机:是工具,帮助解决实际问题 操作系统,是为了方便使用硬件 计算机模型: 图灵机,模拟人类计算 起初的图灵机就像一个只会做一道菜的厨师 通用图灵机,核心是设置控制器动作(修改控制器),把逻辑读入控 ...
- Hadoop(三) HADOOP常用命令参数介绍
-help 功能:输出这个命令参数手册 -ls 功能:显示目录信息 示例: hadoop fs -ls hdfs://hadoop-server01:9000/ 备注 ...
- IDEA 调整 VM 配置文件(64位)
64 位操作系统中 8G 内存以下的机子或是静态页面开发者是无需修改的. 64 位操作系统且内存大于 8G 的, 如果你是开发大型项目. Java 项目或是 Android 项目,建议进行修改 . 1 ...
- (O)js核心:this
什么是this this是js中的一个关键词,它总是指向一个对象,而具体指向哪个对象是在运行时基于函数的执行环境动态绑定的,而非函数被声明时的环境. 当函数被调用时,this被添加到作用域中,例如: ...
- 洛谷1066 2^k进制数
原题链接 大力猜结论竟然猜对了.. 对于一对\(k,w\),我们可以把\(w\)位划分成\(k\)位一段的形式,每一段就是转换成十进制后的一位,这个从题面的解释中应该可以理解. 先不考虑可能多出(即剩 ...
- Mac下配置域名和网站测试环境
一.在 /etc/hosts 下配置相关域名 1, control+space 打开spotlight, 搜索“terminal” 2, 打开Terminal 3, 在terminal界面中输入 ...