PHP用PHPExcel导出有多个工作表的Excel表格(thinkPHP3.2.3)
直接上代码:
//导出excel
public function excel()
{
//引入相关文件
import("Org.Util.PHPExcel");
import("Org.Util.PHPExcel.Worksheet.Drawing");
import("Org.Util.PHPExcel.Writer.Excel2007");
$model = M('user');
//用户信息
$data = $model
->field('id,alias,login_time,create_time')
->select();
$objPHPExcel = new \PHPExcel();
$objWriter = new \PHPExcel_Writer_Excel2007($objPHPExcel);
//新建第一个工作表
$objActSheet = $objPHPExcel->getActiveSheet();
// 水平居中(位置很重要,建议在最初始位置)
// $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objActSheet->setCellValue('A1', 'alias');
$objActSheet->setCellValue('B1', '登录时间');
$objActSheet->setCellValue('C1', '注册时间');
// 设置个表格宽度
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(35);
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(35);
// 垂直居中
// $objPHPExcel->getActiveSheet()->getStyle('A')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
//向表格中插入数据
foreach ($data as $k => $v) {
$k += 2;
$objActSheet->setCellValue('A' . $k, $v['alias']);
$login_time = $v['login_time'] > 0 ? date('Y-m-d H:i:s', $v['login_time']) : '';
$objActSheet->setCellValue('C' . $k, $login_time);
$create_time = $v['create_time'] > 0 ? date('Y-m-d H:i:s', $v['create_time']) : '';
$objActSheet->setCellValue('B' . $k, $create_time);
}
//重命名表,这个名称是表格下方的名称
$objPHPExcel->getActiveSheet()->setTitle('用户行为');
//新建第二个工作表,第二个表中的数据是对第一个表中行为的统计
$objActSheet1 = $objPHPExcel->createSheet();
//这个工作表的列名我们用数据库'gift'表中的数据
$gift_list = M('gift')->field('id,listorder,title')->order('listorder asc,id desc')->select();
// Excel表格的列名数组,用于写入数据所用
$cell_name = [0 => 'A', 1 => 'B', 2 => 'C', 3 => 'D', 4 => 'E', 5 => 'F', 6 => 'G', 7 => 'H', 8 => 'I', 9 => 'J', 10 => 'K', 11 => 'L', 12 => 'M', 13 => 'N', 14 => 'O', 15 => 'P', 16 => 'Q', 17 => 'R', 18 => 'S', 19 => 'T', 20 => 'U', 21 => 'V', 22 => 'W', 23 => 'X', 24 => 'Y', 25 => 'Z', 26 => 'AA', 27 => 'AB', 28 => 'AC', 29 => 'AD', 30 => 'AE', 31 => 'AF', 32 => 'AG', 33 => 'AH', 34 => 'AI', 35 => 'AJ', 36 => 'AK', 37 => 'AL', 38 => 'AM', 39 => 'AN'];
//第一列列名是‘alias’
$objActSheet1->setCellValue('A1', 'alias');
//循环‘user’表中的数据
foreach ($data as $k => $v) {
//A列中的值都是‘user’表中的 alias 值
$objActSheet1->setCellValue('A' . ($k + 2), $v['alias']);
//循环‘gift'中的数据,生成列名,并加入数据
foreach ($gift_list as $key => $item) {
//列名,从第二列开始
$objActSheet1->setCellValue($cell_name[$key + 1] . '1', $item['title']);
// 设置表格宽度
//$objActSheet1->getColumnDimension($cell_name[$key])->setWidth(20);
//计算数量
$count = M('gift_log')->where(['user_id' => $v['id'], 'gift_id' => $item['id']])->count();
//插入数据
$objActSheet1->setCellValue($cell_name[$key + 1] . ($k + 2), $count);
}
}
//重命名表,这个名称是表格下方的名称
$objActSheet1->setTitle('中奖记录');
//新建第三个表 。。。
//$objActSheet2 = $objPHPExcel->createSheet();
//do something
//设置活动单指数到第一个表,所以Excel打开时,是第一个表
$objPHPExcel->setActiveSheetIndex(0);
$fileName = '用户表_';
$date = date("Y-m-d", time());
$fileName .= "{$date}.xls";
$fileName = iconv("utf-8", "gb2312", $fileName);
header('Content-Type: application/vnd.ms-excel');
header("Content-Disposition: attachment;filename=\"$fileName\"");
header('Cache-Control: max-age=0');
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output'); //文件通过浏览器下载
}
PHP用PHPExcel导出有多个工作表的Excel表格(thinkPHP3.2.3)的更多相关文章
- 导出功能在数据库内容为数字,excel表格中是汉字的时候
代码如下: @ExcelField(title = "饮水器评价",dictType = "waterer_rate" ,align = 2, sort = 2 ...
- phpExcel导出excel加超级链接的实例代码[转]
phpexcel实现的导出excel文件的代码,且可以在excel文件中加入超级链接. 说明:PHPExcel的开发包Tests目录有详细使用实例.以下代码支持中文,注意文件编码,文件保存为utf-8 ...
- phpexcel导出数字带E的解决方法
phpexcel导出数字带E的解决方法 excel之所以带E 是因为按照数字格式来显示了(数字过长的时候) 数字左边或者右边加空格就变成字符串了 那么excel就会按照字符串格式来显示了 就不会带E了
- excel怎么并排查看两个工作表
excel怎么并排查看两个工作表 excel怎么并排查看两个工作表?excel打开一个窗口想要同时查看两个工作表中的数据,类似于word中的分栏效果,该怎么实现呢?EXCEL是一个使用最多的办公软件, ...
- Excel 工作簿、工作表与单元格
工作簿 工作簿是指在 Excel 中用来存储并处理数据的文件,其扩展名是.xlsx.工作簿是由工作表组成的,每一个工作簿都可以包含一个或多个工作表,默认为 3 个工作表.Excel 2007 之前的版 ...
- PHPExcel导出工作蒲(多表合并)教程+详细代码解读
最近做了一个需求,导出统计数据,因为需要同时导出多个不同的统计数据,所以不能像以往导出数据列表一样去实现这个需求,刚好空下来就记录一下(PHPExcel导出Excel多sheet合并) 一.主要使用的 ...
- PHPExcel 多工作表 导出
//浏览器输出excel header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet ...
- php:PHPExcel导出excel表格
一.动态生成的内容如何能当成文件来下载呢? 方法:1.将Content-Type设置成application/octet-stream就可以了,即[header('Content-Type: appl ...
- PHPExcel导出导入excel、csv等格式数据
<?php if(!defined('BASEPATH')) exit('No direct script access allowed'); //物资发料单明细 class Read_writ ...
随机推荐
- Java实现 洛谷 P1567 统计天数
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.i ...
- java代码(7) ---guava之Bimap
guava之Bimap bimap的作用很清晰:它是一个——映射,可以通过key得到value,也可以通过value得到key 一.概述 1.bimap和普通HashMap区别 (1)在java集合类 ...
- 剑指Offer之和为S的连续正数序列
题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久,他 ...
- 关于adb的下载和基本使用
我们无论是开发还是测试,对Android SDK一定都不陌生,如果我们要使用adb(Android debug bridge)命令,那么这个就必不可少了. 1.给大家提供一个下载地址:https:// ...
- javaCV开发详解之12:视频转apng动态图片实现,支持透明通道,也支持摄像机、桌面屏幕、流媒体等视频源转apng动态图
wjavaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG. ...
- 02.快捷键及基本dos命令
无论是使用Windows.Linux操作系统,还是在IDE中,快捷键都是系统本身的标配,事实上,Ctrl+C.V这样的操作,可以帮我们节省大量的时间,如果在IDE中编写代码,除了代码本身,将其余所有的 ...
- 【原创】Linux中断子系统(三)-softirq和tasklet
背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...
- 从零开始的Spring Boot(3、Spring Boot静态资源和文件上传)
Spring Boot静态资源和文件上传 写在前面 从零开始的Spring Boot(2.在Spring Boot中整合Servlet.Filter.Listener的方式) https://www. ...
- Chrome启动选项
1. Chrome Options 这是一个Chrome的参数对象,在此对象中使用add_argument()方法可以添加启动参数,添加完毕后可以在初始化Webdriver对象时将此Options对象 ...
- Mysql:bit类型的查询与插入
原文链接:https://www.cnblogs.com/cuizhf/archive/2013/05/17/3083988.html Mysql关于bit类型的用法: 官方的资料如下: 9.1.5. ...