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实现 串中取3个不重复字母
从标准输入读入一个由字母构成的串(不大于30个字符). 从该串中取出3个不重复的字符,求所有的取法. 取出的字符,要求按字母升序排列成一个串. 不同的取法输出顺序可以不考虑. 例如: 输入: abc ...
- java实现第五届蓝桥杯信号匹配
信号匹配 从X星球接收了一个数字信号序列. 现有一个已知的样板序列.需要在信号序列中查找它首次出现的位置.这类似于串的匹配操作. 如果信号序列较长,样板序列中重复数字较多,就应当注意比较的策略了.可以 ...
- java实现第六届蓝桥杯奇妙的数字
奇妙的数字 奇妙的数字 小明发现了一个奇妙的数字.它的平方和立方正好把0~9的10个数字每个用且只用了一次. 你能猜出这个数字是多少吗? 请填写该数字,不要填写任何多余的内容. 结果:69 impor ...
- CICD | Jenkins & Gitlab集成:WebHook触发构建
在上一篇博客中,我们学习了Jenkins的搭建和插件+流水线的基本使用方法,Jenkins极大地提升了部署效率. 最近想学习一下如何集成GitLab webhook,实现进一步解放双手,目标: 推送( ...
- Linux文件系统--基于EXT2
一.文件系统基本知识 ① 存储在永久性存储介质,由程序按照某种格式制作的数据集合叫做文件 ② 磁盘上管理文件的文件.数据结构和操作构成磁盘文件系统,简称文件系统 ③ 文件属性 (1)名称 (2)位置 ...
- Rust异步之Future
对异步的学习,我们先从Future开始,学习异步的实现原理.等理解了异步是怎么实现的后,再学习Rust异步编程涉及的2个库(futures.tokio)的时候就容易理解多了. Future rust中 ...
- vue + elementUI开发,使用el-tabs,导致浏览器卡死问题。
第一次自己建项目,用过el-tabs,当时是正常使用的. 贴下版本信息: "element-ui": "^2.13.0", "js-md5" ...
- 01.Markdown学习
Markdown学习 一.标题 在想要设置为标题的文字前面加#来表示(#后面有空格) 一个#是一级标题,二个#是二级标题,以此类推.支持六级标题. 示例: # 这是一级标题 ## 这是二级标题 ### ...
- 如何在本地搭建微信小程序服务器
现在开发需要购买服务器,价格还是有点贵的,可以花费小代价就可以搭建一个服务器,可以用来开发小程序,博客等. 1.域名(备案过的) 2.阿里云注册免费的https证书 3.配置本地的nginx 4.内网 ...
- 关于一个服务和api监控的界面,涉及ajax-jsonp,promise应用
<!DOCTYPE html> <html class="mobile hairline" data-dpr=""> <head& ...