为什么80%的码农都做不了架构师?>>>   

在所有的php office库(http://www.21doc.net/php/awesomephp#Office),以前用得最多的版本是PHPOffice/PHPExcel(https://github.com/PHPOffice/PHPExcel),不过该库最后更新的版本为2015发布的1.8.1版本,已经终止维护,官方也不建议用户继续使用。

官方不维护PHPExcel后,新起一个项目叫PhpSpreadsheet(https://github.com/PHPOffice/PhpSpreadsheet)。新项目使用了大量的php新特性,比如命名空间,PSR标准,性能也比PHPExcel高了不少。

在使用时,由于PhpSpreadsheet是在原PHPExcel基础上开发的,PhpSpreadsheet接口api操作上也和旧的PHPExcel相似,而且支持更多的格式。

整合到yii2框架

下载phpspreadsheet,当前最新版本1.5.0
方式一,composer下载

composer require phpoffice/phpspreadsheet

方式二,对于部分不能用composer顺利下载的用户,可以手工下载源码
PhpSpreadsheet
下载地址:https://github.com/PHPOffice/PhpSpreadsheet/releases

simple-cache (注意:PhpSpreadsheet的依赖库,必须也下载)
下载地址:https://github.com/php-fig/simple-cache/releases

把下载的文件放置在下边目录,如下图:

phpspreadsheet类库命名方式符合 PSR-4 标准,使用 Yii 官方的自动加载器来自动加载这些类。 你只需给他们的每个根命名空间声明一下根路径别名。 
main.php

<?php
return ['aliases' => ['@bower' => '@vendor/bower-asset','@npm'   => '@vendor/npm-asset','@Psr/SimpleCache' => '@vendor/psr/simple-cache/src','@PhpOffice' => '@vendor/phpoffice/phpspreadsheet/src',],'vendorPath' => dirname(dirname(__DIR__)) . '/vendor',......
];

PhpSpreadsheet自带很多例子代码,参考phpoffice\phpspreadsheet\samples\Basic\01_Simple_download_xlsx.php实现一个http导出excel功能。

yii2中导出excel实现:

ExcelController.php

<?php
namespace frontend\controllers;use Yii;
use yii\web\Controller;
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Spreadsheet;class ExcelController extends Controller
{public function actionIndex(){// Create new Spreadsheet object$spreadsheet = new Spreadsheet();// Set document properties$spreadsheet->getProperties()->setCreator('Maarten Balliauw')->setLastModifiedBy('Maarten Balliauw')->setTitle('Office 2007 XLSX Test Document')->setSubject('Office 2007 XLSX Test Document')->setDescription('Test document for Office 2007 XLSX, generated using PHP classes.')->setKeywords('office 2007 openxml php')->setCategory('Test result file');// Add some data$spreadsheet->setActiveSheetIndex(0)->setCellValue('A1', 'Hello')->setCellValue('B2', 'world!')->setCellValue('C1', 'Hello')->setCellValue('D2', 'world!');// Miscellaneous glyphs, UTF-8$spreadsheet->setActiveSheetIndex(0)->setCellValue('A4', 'Miscellaneous glyphs')->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç');// Rename worksheet$spreadsheet->getActiveSheet()->setTitle('Simple');// Set active sheet index to the first sheet, so Excel opens this as the first sheet$spreadsheet->setActiveSheetIndex(0);// Redirect output to a client’s web browser (Xlsx)header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');header('Content-Disposition: attachment;filename="01simple.xlsx"');header('Cache-Control: max-age=0');// If you're serving to IE 9, then the following may be neededheader('Cache-Control: max-age=1');// If you're serving to IE over SSL, then the following may be neededheader('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the pastheader('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modifiedheader('Cache-Control: cache, must-revalidate'); // HTTP/1.1header('Pragma: public'); // HTTP/1.0$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');$writer->save('php://output');exit;}
}

访问http://localhost/yii2/frontend/web/index.php?r=excel/index,生成的文件内容如下:

转载于:https://my.oschina.net/penngo/blog/2253032

yii2框架中整合PHPOffice的PhpSpreadsheet开源库相关推荐

  1. 在php的yii2框架中整合hbase库

    为什么80%的码农都做不了架构师?>>>    Hbase通过thrift这个跨语言的RPC框架提供多语言的调用. Hbase有两套thrift接口(thrift1和thrift2) ...

  2. 在DWZ框架中整合kindeditor复文本框控件

    今天上午在DWZ框架中整合kindeditor复文本框控件,发现上传图片是老是提示 "上传中,请稍候...",上网查看别人说可能是文件路径问题,在想以前在其他项目中用这个控件一直没 ...

  3. 在YII2框架中使用UEditor编辑器发布文章

    在YII2框架中使用UEditor编辑器发布文章 创建文章数据表 文章数据表主要有4个字段 id  主键(int) title 标题(varchar) content 内容(text) created ...

  4. yii引入php文件,Yii2框架中CSS、JS文件引入要领_PHP开发框架教程

    在yii2中,因为yii2版本升级致使了,许多yii2的用法跟yii1有着很大的区分,这几天一直在view层的视图界面徜徉着,碰到什么问题呢? (引荐进修:yii框架) 问题就是搞不清我该怎样去引入C ...

  5. php 接收curl json数据格式,curl发送 JSON格式POST数据的接收,以及在yii2框架中的实现原理【精细剖析】...

    1.通过curl发送json格式的数据,譬如代码: function http_post_json($url, $jsonStr) { $ch = curl_init(); curl_setopt($ ...

  6. behavior php,YII2框架中behavior行为的理解与使用方法示例

    本文实例讲述了YII2框架中behavior行为的理解与使用方法.分享给大家供大家参考,具体如下: YII2中的行为说白了就是对组件功能的扩展,在不改变继承关系的条件下. 行为附加到组件后,行为将注入 ...

  7. YII2框架中 where limit offset 函数对分页的使用

    YII2框架中 where limit offset 函数对分页的使用 以前公司用的是TP框架,直接往limit函数里面传两个动态的参数就可以实现分页的效果了,刚换了公司这个公司用的是YII2 框架, ...

  8. 手工集成7牛SDK到YII2框架中

    手工集成7牛SDK到YII2框架中 7牛地址:qiniu.com 7牛云的产品列表中有:对象存储.自定义数据处理.多媒体处理.融合CDN加速.直播空间等资源. 我们上传图片文件需要的是『对象存储』,关 ...

  9. yii2必须掌握php,Yii2框架中一些折磨人的坑

    说点闲话 距离上次写博客,已经有一年了.在动手写之前,总是带着深深的罪恶感.被它折磨许久,终于,还是,动手了. 值得庆祝的一件事:最近开始健身了.每天动感单车45分钟,游泳45分钟,真的是(生)爽(不 ...

最新文章

  1. Linux/Unix中的重定向简单实例
  2. 使用FileUpload控件上传图片并自动生成缩略图、自动生成带文字和图片的水印图
  3. 二维树状数组 ---- codeforces341D
  4. docker 删除容器_Docker (二) Windows10专业版安装教程
  5. defender 删除_Java 8中的默认方法(Defender方法)简介
  6. Linux中ls -l(ll)返回结果中的文件访问权限-rw-r--rw-
  7. C++的hashmap和Java的hashmap
  8. kafka学习_kafka学习(第一章 初识kafka)
  9. 《Ray Tracing from the Ground Up》中的坐标系是怎么确定的
  10. Java整形位运算避免精度缺失,浮点数精度问题透析:小数计算不准确+浮点数精度丢失根源...
  11. Qt中出现0xc0000135错误
  12. VUE 拦截浏览器后退弹窗,弹窗一闪立刻消失问题
  13. 中科院各大计算所详细介绍
  14. Bumped!(dijskra)
  15. 第二集 第一魂环 第十一章
  16. RxJava串行执行任务
  17. 中点分割裁剪算法 c语言,裁剪算法——中点分割算法/Liang-Barsky算法
  18. 郭博分析modbus主机模式
  19. ubuntu系统安装TIM,QQ,微信,迅雷,百度网盘
  20. Scala+Hadoop+Spark开发

热门文章

  1. 网页中点击链接直接进入qq页面
  2. unity3D与网页的交互---做项目的一点总结
  3. oracle 的“+”和“,”连接表的方式
  4. 上传文件到阿里云OSS对象存储,查询访问地址,删除文件
  5. 著作权法(1分)18年5月考1分的概率大
  6. Exchange2010与Office365混合部署升级到Exchange2016混合部署——Ex2016运行Office365混合配置向导...
  7. ajax-登陆+验证码
  8. nagios插件脚本check_linux_stats.pl 安装
  9. Sharepoint学习笔记---Debug--使用ULS Log跟踪Solution错误信息
  10. mysql中的事物处理