tp5使用PHPExcel(下载引入/composer与模板/生成方式搭配使用)
PHPExcel使用
一:引入
tp5.0,tp5.1:
1:composer方式
a:根目录下执行:composer require phpoffice/phpexcel
b:引入(可new \PHPExcel()直接使用):
use PHPExcel_IOFactory;
use PHPExcel;
2:下载引入方式
a:下载PHPExcel:
地址:https://pan.baidu.com/s/1gfrEt7tz2uwOrubeHcuorg
提取码:zxcv
b:放到项目根目录extend文件夹下,目录结构如下:

c:引入(可new \PHPExcel()直接使用)
二:导出
预置模板方式(接下方导出):
//要导出的数据
$data[] = ['aa'=>'第一列', 'bb'=>'第二列', 'cc'=>'第三列', 'dd'=>'第四列'];
$data[] = ['aa'=>'第一列', 'bb'=>'第二列', 'cc'=>'第三列', 'dd'=>'第四列'];
//模板文件路径(可更改,文件内定义表头与格式,第一行标题,第二行表头)
$file = EXTEND_PATH . 'files/excel.xls';
//加载模板
$phpexcel=\PHPExcel_IOFactory::createReader("Excel2007")->load($file);
$objActSheet = $phpexcel->getActiveSheet();
//写入标题
$objActSheet->setCellValue('A1', '标题');
//循环写入数据
$i = 0;
foreach ($data as $item) {
$row = 3 + $i;
$objActSheet->setCellValue('A' . $row, $i + 1);
$objActSheet->setCellValue('B'.$row,$item['aa']);
$objActSheet->setCellValue('C'.$row,$item['bb']);
$objActSheet->setCellValue('D'.$row,$item['cc']);
$objActSheet->setCellValue('E'.$row,$item['dd']);
$objActSheet->getRowDimension($row)->setRowHeight(40);//行高40
$i++;
}
生成方式(接下方导出):
//表头
$head = ['aa'=>'第一列', 'bb'=>'第二列', 'cc'=>'第三列', 'dd'=>'第四列'];
//导出数据
$data[] = ['aa'=>'aa', 'bb'=>'bb', 'cc'=>'cc', 'dd'=>'dd'];
$data[] = ['aa'=>'aa', 'bb'=>'bb', 'cc'=>'cc', 'dd'=>'dd'];
//创建新的PHPExcel对象
$phpexcel= new \PHPExcel();
$objActSheet = $phpexcel->getActiveSheet();
//设置表头
$key = ord("A");
$key2 = ord("A");
$colum2 = '';
foreach ($head as $k => $v) {
$colum = chr($key);
$objActSheet->setCellValue($colum2 . $colum . '2', $v);
if ($key < 90) {
$key += 1;
} else {
$key = ord("A");
$colum2 = chr($key2);
$key2++;
}
}
//标题
$objActSheet->setCellValue('A1', '标题')->mergeCells('A1:' . $colum . 1);
$row= 2;
foreach ($data as $rows) { //行写入
$span = ord("A");
$span2 = ord("A");
$j2 = '';
$row++;
foreach ($head as $k=>$value) {// 列写入
$j = chr($span);
$objActSheet->setCellValueExplicit($j2 . $j . $row, isset($rows[$k])?$rows[$k]:'', \PHPExcel_Cell_DataType::TYPE_STRING);
if ($span < 90) {
$span += 1;
} else {
$span = ord("A");
$j2 = chr($span2);
$span2++;
}
}
}
导出:
$fileName = 'excle.xls';
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename=' . $fileName);
header('Cache-Control: max-age=0');
$objWriter = \PHPExcel_IOFactory::createWriter($phpexcel,'Excel2007');
$objWriter->save('php://output');
格式:
//创建新的工作表
$phpexcel->createSheet();
//选择工作表
$phpexcel->setActiveSheetIndex(0);
//重命名工作表
$phpexcel->getActiveSheet()->setTitle('Simple');
//单元格合并并设置值
$phpexcel->getActiveSheet()->setCellValue('A1', '值')->mergeCells('A1:E1' );
//设置字体
$phpexcel->getActiveSheet()->getStyle('A3:S' . $row )->getFont()->setName('Candara');
//设置字号
$phpexcel->getActiveSheet()->getStyle('A3:S' . $row )->getFont()->setSize(12);
//字体加粗
$phpexcel->getActiveSheet()->getStyle('A1:S'. $row )->getFont()->setBold(true);
//行高度
$phpexcel->getActiveSheet()->getRowDimension($row)->setRowHeight(40);
//列宽度
$phpexcel->getActiveSheet()->getColumnDimension('A')->setAutoSize(true);//自适应
$phpexcel->getActiveSheet()->getColumnDimension('A')->setWidth(300);
//表格画线
$styleArray=array('borders'=>array('allborders'=>array('style'=>\PHPExcel_Style_Border::BORDER_THIN,),),);
$phpexcel->getActiveSheet()->getStyle('A1:S' . $row)->applyFromArray($styleArray);
//文字居中
$phpexcel->getActiveSheet()->getStyle('A1:S' .$row)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER)->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
//文字靠右
$phpexcel->getActiveSheet()->getStyle('A' .$row)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
//内容自动换行
$phpexcel->getActiveSheet()->getStyle('A1:S' .$row)->getAlignment()->setWrapText(TRUE);
//锁定(以B3单元格为分界线,上方和左方都会锁定)
$phpexcel->getActiveSheet()->freezePane('B3');
//设置下拉
$objValidation=$phpexcel->getActiveSheet()->getCell('C1' )->getDataValidation();
$objValidation->setType(\PHPExcel_Cell_DataValidation::TYPE_LIST)
->setErrorStyle(\PHPExcel_Cell_DataValidation::STYLE_INFORMATION )
->setAllowBlank(false)
->setShowInputMessage(true)
->setShowErrorMessage(true)
->setShowDropDown(true)
->setErrorTitle('输入的值有误')
->setError('您输入的值不在下拉框列表内.')
->setPromptTitle("标题")
->setPrompt("备注")
->setFormula1("选项一,选项二");
三:导入
$file = '路径';
$phpexcel = \PHPExcel_IOFactory::load($file);
$phpexcel->setActiveSheetIndex(0);//指定第一个工作表
$data= $phpexcel->getActiveSheet()->toArray(null, true, true, true);
tp5使用PHPExcel(下载引入/composer与模板/生成方式搭配使用)的更多相关文章
- tp5使用PHPWord(下载引入/composer两种方式)
PHPWORD使用文档 一:引入 tp5.0,tp5.1: 1:composer方式(推荐) a:根目录下执行:composer require phpoffice/phpword b:引入: use ...
- TP5.0 PHPExcel 数据表格导出导入(引)
TP5.0 PHPExcel 数据表格导出导入(引) 今天看的是PHPExcel这个扩展库,Comporse 下载不下来,最后只能自己去github里面手动下载,但有一个问题就是下载下来的PHPExc ...
- springmvc+mybatis下载项目自带模板
1.首先如果要获取javaweb项目中的文件在哪,用到的代码:request.getSession().getServletContext().getRealPath("/WEB-INF/d ...
- 下载好的AE模板怎么用
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 下载好的AE模板怎么用_百度经验
- TP5.0 PHPExcel 数据表格导出(原)
今天看的是PHPExcel这个扩展库,Comporse 下载不下来,最后只能自己去github里面手动下载,但有一个问题就是下载下来的PHPExcel没有命名空间,所以框架里面的use根本引入不进去, ...
- TP5.0 PHPExcel 数据表格导出导入(原)
今天看的是PHPExcel这个扩展库,Comporse 下载不下来,最后只能自己去github里面手动下载,但有一个问题就是下载下来的PHPExcel没有命名空间,所以框架里面的use根本引入不进去, ...
- 项目中引入composer
众所周知,composer可以自定义加载插件库和依赖,它也是用PHP写的,怎样在自己的项目中引入并使用composer呢?. 1.新建一个项目,在项目的根目录创建composer.json文件,用过一 ...
- laravel中引入composer安装在vendor中的第三方组件
一.安装第三方组件 方法一:使用命令行安装第三方(已phpword为例): composer require phpoffce/phpword ^v0..* 方法二: 修改主项目composer.js ...
- tp5使用PHPexcel扩展导出excel表
1,使用composer安装phpexcel包: composer require phpoffice/phpexcel 2,在控制器中创建方法: (1)使用PHPexcel扩展.代码如下 /** * ...
随机推荐
- day94:flask:Jinjia2模板引擎&flask中的CSRF攻击&Flask-SQLAlchemy的创建模型类和基本的增删改查
目录 1.Jinjia2模板引擎 1.Jinjia2加载模板并传递数据到模板中 2.Jinjia2的模板语句 3.模板中特有的变量和函数 4.模板中内置的过滤器 5.自定义过滤器 6.模板继承 2.在 ...
- springboot中使用Filter、Interceptor和aop拦截REST服务
在springboot中使用rest服务时,往往需要对controller层的请求进行拦截或者获取请求数据和返回数据,就需要过滤器.拦截器或者切片. 过滤器(Filter):对HttpServletR ...
- 关于C# Span的一些实践
Span这个东西出来很久了,居然因为5.0又火起来了. 相关知识 在大多数情况下,C#开发时,我们只使用托管内存.而实际上,C#为我们提供了三种类型的内存: 堆栈内存 - 最快速的内存,能够做到极 ...
- distinct关键字
对于distinct关键字,distinct关键字应用于所有列而不仅是前置它的列,如果给出多个列,将会比较两个列. 这是完整表, 首先是select distinct username from us ...
- Linux高可用之Keepalived
1: 安装keepalived yum install -y keepalived ipvsadm 安装keepalived和LVS管理软件ipvsadm 主机与备机都需要安装 ######修改配置文 ...
- kafka入门之broker--通信协议
kafka的通讯协议是基于tcp之上的二进制协议,所有类型的请求和响应都是结构化的,由不同的初始类型构成.kafka使用这组协议完成各个功能的实现. 单个kafka client通常需要同时连接多个b ...
- 关于深度学习之中Batch Size的一点理解(待更新)
batch 概念:训练时候一批一批的进行正向推导和反向传播.一批计算一次loss mini batch:不去计算这个batch下所有的iter,仅计算一部分iter的loss平均值代替所有的. 以下来 ...
- 万字长文深度剖析面向对象的javascript
目录 简介 什么是对象 构造函数 构造函数的特点 new命令的原理 prototype对象 Object的prototype操作 Object.getPrototypeOf Object.setPro ...
- Docker 入门介绍
Docker是什么 从发布到现在 docker一直很受关注,在一定程度是改变了软件行业 如果你还不知道 docker 是什么是不是有点out了,接下来我们来介绍docker是什么,解决了什么问题,好处 ...
- C++里面this关键字的用法和功能
1.this指针的用处 一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果.this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象 ...