2019独角兽企业重金招聘Python工程师标准>>>

在ThinkPHP5.0框架使用PHPExcel实现写Excel文件

在ThinkPHP5.0项目中使用PHPExcel导出Excel的方法和ThinkPHP3.2基本相同,主要区别在于两个版本对第三方库存放位置和加载方法不同。在我们的TP5.0项目里,我们把PHPExcel放在项目根目录extend文件夹内,然后使用Loader::import加载。

PHPExcel对Excel单元格、表格行、列操作都提供了两种方式:

  1. 参数名是行、列或单元格的名字调用方法, 如getColumnDimension(A)、getStyle('B2')、setCellValue('C1', 'value')
  2. 按行、列或单元格的column/row下标, 如getColumnDimensionByColumn(1), getStyleByColumnAndRow(1, 1), setCellValueByColumnAndRow(2, 1, 'value')

个人觉得使用行、列或单元格的column/row下标这种方法好一些,特别是当要写的表格超过26列时(第26列的字母名是Z,但27列的字母名是AA)。但当使用column/row下标这种式时需要注意column的起始值是0,而row的起始值是1。想了解PHPExcel所有操作单元格方法请看插件里的Worksheet.php这个文件。下面是本人总结的一些常用方法。

Loader::import('PHPExcel', EXTEND_PATH, '.php');
Loader::import('PHPExcel.Writer.Excel5', EXTEND_PATH);
Loader::import('PHPExcel.IOFactory.php', EXTEND_PATH);
$date_str = date('Y-m-d', time());
$objPHPExcel = new \PHPExcel();
$objPHPExcel->getProperties() ->setCreator('zhanghong') //设置创建者 ->setLastModifiedBy($date_str) //设置时间 ->setTitle('detail user info') //设置标题 ->setSubject('users contact info') //设置备注 ->setDescription('users contact info') //设置描述 ->setKeywords('userinfo') //设置关键字 | 标记 ->setCategory('users'); //设置类别$activeSheet = $objPHPExcel->getActiveSheet();
$activeSheet->setTitle("注册用户");// 合并单元格A1:F1
// $activeSheet->mergeCells('A1:F1');
// 与mergeCells('A1:F1')等同,优点是Z列后的名字是‘AA’,自己写程序不好把第27列第一行转成-AA1
$activeSheet->mergeCellsByColumnAndRow(0, 1, 5, 1);// 拆分单元格
// $activeSheet->unmergeCells('A1:F1');
// // 与 unmergeCells('A1:F1') 等同
// $activeSheet->unmergeCellsByColumnAndRow(0, 1, 5, 1);$activeSheet->getStyle('A2')->getFont()->setName('宋体') //字体->setSize(12) //字体大小->setBold(true); //字体加粗
$activeSheet->setCellValue('A2', "字体12号加粗");// 设置行高
$activeSheet->getRowDimension('3')->setRowHeight(12);
$activeSheet->getRowDimension('4')->setRowHeight(24);// 设置列宽
$activeSheet->getColumnDimension('B')->setWidth(10);
$activeSheet->getColumnDimension('C')->setWidth(20);//长度不够显示的时候 是否自动换行
$activeSheet->getStyle('B')->getAlignment()->setWrapText(true);
$activeSheet->setCellValueByColumnAndRow(1, 2, '长度不够显示的时候自动换行');//设置打印 页面 方向与大小(此为横向)
$activeSheet->getPageSetup()->setOrientation(\PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE);
$activeSheet->getPageSetup()->setPaperSize(\PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4);// 冻结单元格
//第一种方式
$activeSheet->freezePane('C5');
//第二种方式
$activeSheet->freezePaneByColumnAndRow(2, 5);//设置边框
$activeSheet->getStyle('A1:H8')->getBorders()->getAllBorders()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);// 设置背景色
$activeSheet->getStyleByColumnAndRow(4, 3)->getFill()->applyFromArray(array('type' => \PHPExcel_Style_Fill::FILL_SOLID, 'startcolor' => array('rgb' =>'C7C7C7')));//设置水平居中
$activeSheet->getStyle('A1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$activeSheet->getStyle('B2')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
//垂直居中
$activeSheet->getStyle('C1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$activeSheet->getStyle('C2')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
//左对齐
$activeSheet->getStyle('B')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY);
//右对齐
$activeSheet->getStyle('D')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);$margin = 1.78/2.54;   //phpexcel 中是按英寸来计算的,所以这里换算了一下
$margin_right = 1/2.54;   //phpexcel 中是按英寸来计算的,所以这里换算了一下
$activeSheet->getPageMargins()->setLeft($margin);      //左
$activeSheet->getPageMargins()->setRight($margin_right);    //右
//$activeSheet->getPageSetup()->setFitToWidth('1');//自动填充到页面的宽度
//$activeSheet->getPageSetup()->setFitToHeight('1');//自动填充到页面的高度
//
//设置 标题索引    (点击 标题 跳转到对应的工作簿中)
$activeSheet->getCell('B4')->getHyperlink()->setUrl("sheet://'说明'!A1");header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="userinfo_'.date("mdH").'.xls"');
header('Cache-Control: max-age=0');
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');

转载于:https://my.oschina.net/laifuzi/blog/1186492

PHPExcel导出Excel方法总结——ThinkPHP5相关推荐

  1. 关于PHPExcel导出Excel时身份证,数字会导出为科学计数的处理方法

    原文:关于PHPExcel导出Excel时身份证,数字会导出为科学计数的处理方法 上次在开发一个项目时,用到PHPExcel导出数据,其中有导出身份证等长串数字时导出的Excel中显示为科学计数方式. ...

  2. 应用phpexcel导出excel文件后打不开的问题解决方法

    应用phpexcel导出excel文件后打不开的问题解决方法 参考文章: (1)应用phpexcel导出excel文件后打不开的问题解决方法 (2)https://www.cnblogs.com/im ...

  3. php无法导出excel,PHPExcel导出Excel文件时出现错误的解决办法

    phpexcel文件是一款开源的php表格操作插件,只要用到excel数据导入导出的朋友大多数人都选择此款插件了,但在使用中也会有问题出现,下面来看问题分析研究. PHPExcel是PHP中功能最强大 ...

  4. phpExcel导出excel打不开问题

    关于phpExcel导出excel之后打开不了的问题 情况说明: 我相信很多人用过phpExcel这个类库都会遇到的一个问题就是,导出excel表格文件后(xls或xlsx文件),打开这个文件既然显示 ...

  5. 使用phpexcel导出excel常用函数

    下面主要总结了在工作中,我们利用phpexcel导出excel时常用的函数方法. <?php// 这边需要引入你自己的phpexcel内库 include_once './phpexcel/PH ...

  6. PHPExcel导出excel

    PHPExcel导出excel 如果导出中文时出现乱码,可以尝试将字符串转换成gb2312,例如下面就把$yourStr从utf-8转换成了gb2312: $yourStr = mb_convert_ ...

  7. Yii框架中使用PHPExcel导出Excel文件

    Yii框架中使用PHPExcel导出Excel文件http://www.cnblogs.com/wgx214/p/3709521.html 转载于:https://www.cnblogs.com/fl ...

  8. PHP导出Excel方法大全

    导出EXCEL方法一 #xmlns即是xml的命名空间$str = "<html xmlns:o=\"urn:schemas-microsoft-com:office:off ...

  9. 打开excel显示php拓展名,phpexcel 导出excel 因为文件格式或文件扩展名无效,请确定文件未损坏,并且文件扩展名与文件的格式匹配...

    phpexcel导出excel:打开出现这个错误,强制打开是乱码 $objPHPExcel =newPHPExcel(); $filename ="test.xls"; heade ...

  10. phpExcel导出excel加超级链接和图片的实例代码

    <span style="font-family: Arial, 宋体; font-size: 14px; line-height: 24px; text-indent: 14px; ...

最新文章

  1. 更新!带你认识推荐系统全貌的论文清单
  2. 静态路由默认路由的配置
  3. 怎样解决外键约束_《设计心理学》|找寻“设计师”所遇的真正问题与解决之道...
  4. activiti学习--08 连线
  5. java程序设置软件界面(jFrame)的最小大小
  6. 规划系统_智慧水务规划系统思维的设计思考
  7. 利用StringUtils工具类进行String为空的判断
  8. 数据需求有多野?“三连问”帮你处理得明明白白
  9. linux进程名称最大长度,linux – 进程名称长度的最大允许限制是多少?
  10. OpenJDK8 272在MIPS上的编译修改记录
  11. 犀牛Rhino教程合集37部
  12. 手游反抗战兴起,《原神》打响“起义“第一枪
  13. 李沐-动手学深度学习
  14. (01)ORB-SLAM2源码无死角解析-(18) SVD奇异值分解→求解Homography,Fundamental矩阵,了解矩阵自由度
  15. 论:一个草根程序员怎么进BAT??
  16. 加州大学戴维斯计算机博士生,关于加州大学戴维斯分校博士研究生CSC奖学金信息分享会的通知...
  17. 组播IGMP 自学笔记
  18. iOS真机测试详细步骤及图解
  19. 手机测试Android模块,五个有用的Xposed模块,用于自定义您的Rooted Android手机 | MOS86...
  20. Android新机系统要求,原神手机端最低配置要求

热门文章

  1. 【Tensorlayer系列】深度强化学习之FrozenLake介绍及表格型Q学习求解
  2. JavaWeb-MVC模式概述
  3. C++内置数组和array的比较
  4. arcgis 画图问题
  5. 利用BayesianOptimization库对模型进行贝叶斯调参(XGBOOST)
  6. Python学习总结(4)——运算符
  7. Error while executing: am start -n错误解决方案
  8. @所有人 Flink Forward Asia 2020 议题征集倒计时!
  9. Android的JNI【实战教程】2⃣️--AS下NDK环境配置及第一个工程
  10. VS2015 编译问题记录(更新)