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与模板/生成方式搭配使用)的更多相关文章

  1. tp5使用PHPWord(下载引入/composer两种方式)

    PHPWORD使用文档 一:引入 tp5.0,tp5.1: 1:composer方式(推荐) a:根目录下执行:composer require phpoffice/phpword b:引入: use ...

  2. TP5.0 PHPExcel 数据表格导出导入(引)

    TP5.0 PHPExcel 数据表格导出导入(引) 今天看的是PHPExcel这个扩展库,Comporse 下载不下来,最后只能自己去github里面手动下载,但有一个问题就是下载下来的PHPExc ...

  3. springmvc+mybatis下载项目自带模板

    1.首先如果要获取javaweb项目中的文件在哪,用到的代码:request.getSession().getServletContext().getRealPath("/WEB-INF/d ...

  4. 下载好的AE模板怎么用

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 下载好的AE模板怎么用_百度经验

  5. TP5.0 PHPExcel 数据表格导出(原)

    今天看的是PHPExcel这个扩展库,Comporse 下载不下来,最后只能自己去github里面手动下载,但有一个问题就是下载下来的PHPExcel没有命名空间,所以框架里面的use根本引入不进去, ...

  6. TP5.0 PHPExcel 数据表格导出导入(原)

    今天看的是PHPExcel这个扩展库,Comporse 下载不下来,最后只能自己去github里面手动下载,但有一个问题就是下载下来的PHPExcel没有命名空间,所以框架里面的use根本引入不进去, ...

  7. 项目中引入composer

    众所周知,composer可以自定义加载插件库和依赖,它也是用PHP写的,怎样在自己的项目中引入并使用composer呢?. 1.新建一个项目,在项目的根目录创建composer.json文件,用过一 ...

  8. laravel中引入composer安装在vendor中的第三方组件

    一.安装第三方组件 方法一:使用命令行安装第三方(已phpword为例): composer require phpoffce/phpword ^v0..* 方法二: 修改主项目composer.js ...

  9. tp5使用PHPexcel扩展导出excel表

    1,使用composer安装phpexcel包: composer require phpoffice/phpexcel 2,在控制器中创建方法: (1)使用PHPexcel扩展.代码如下 /** * ...

随机推荐

  1. 分布式监控系统之Zabbix 使用SNMP、JMX信道采集数据

    前文我们了解了zabbix的被动.主动以及web监控相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14024212.html:今天我们来了解下zabb ...

  2. Anno微服务引擎与传统应用相融合

    1.Anno是什么? Anno是一个微服务引擎.在此之前我们通过 Viper项目对Anno有一个基本的认识,并且Viper也受到的很多朋友的喜欢,截止发稿前Viper在GitHub收获了300多个星. ...

  3. CLH lock queue的原理解释及Java实现

    目录 背景 原理解释 Java代码实现 定义QNode 定义Lock接口 定义CLHLock 使用场景 运行代码 代码输出 代码解释 CLHLock的加锁.释放锁过程 第一个使用CLHLock的线程自 ...

  4. D. Circle Game 题解(对称博弈)

    题目链接 题目大意 t组数据(t<=100) 给你一个半径d和步数k,你最开始在原点(0,0)每次可以让x坐标增加k,或者y坐标增加k 两人轮流走,求谁最后不能走了,谁就输了,都是最优博弈 输的 ...

  5. 音乐制作:用FL Studio做电子音乐

    电音制作,自然少不了适合做电音的软件,市面上可以进行电音制作的软件不少,可是如果在这些软件中只能选择一款的话,想必多数人会把票投给FL Studio,毕竟高效率是永远不变的真理,今天就让我们来看看如何 ...

  6. 《Machine Learning in Action》—— 浅谈线性回归的那些事

    <Machine Learning in Action>-- 浅谈线性回归的那些事 手撕机器学习算法系列文章已经肝了不少,自我感觉质量都挺不错的.目前已经更新了支持向量机SVM.决策树.K ...

  7. Python正则运算符优先级re.findall('(.)*',"abc")、re.findall('(.*)',"abc")、re.findall('(.?)*',"abc")的执行结果的影响分析

    我们分别执行三个语句: >>> re.findall('(.)*',"abc") ['c', ''] >>> re.findall('(.*)' ...

  8. 第十八章、QListView/Model开发

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 QListView理论上可以和所有QAbstractItemModel派生的类如QStri ...

  9. jQuery笔记(三)

    day03 - jQuery 学习目标: 能够说出4种常见的注册事件 能够说出 on 绑定事件的优势 能够说出 jQuery 事件委派的优点以及方式 能够说出绑定事件与解绑事件 能够说出 jQuery ...

  10. Kubernetes 教程:在 Containerd 容器中使用 GPU

    原文链接:https://fuckcloudnative.io/posts/add-nvidia-gpu-support-to-k8s-with-containerd/ 前两天闹得沸沸扬扬的事件不知道 ...