原文详情参见 这里

1、下载phpexcel,将压缩包中的classes复制到protected/extensions下并修改为PHPExcel。

2、修改YII配置文件config/main.php

  1. 'import'=>array(
  2. 'application.extensions.PHPExcel.PHPExcel',
  3. ),

(以下处理PHPExcel autoload和YII autoload相冲突的方法任选其一,推荐第4种,最符合YII标准)
3.1、修改PHPExcel中的Autoloader.php

  1. PHPExcel_Autoloader::Register();
  2. PHPExcel_Shared_ZipStreamWrapper::register();

修改为

  1. Yii::registerAutoloader(array('PHPExcel_Autoloader','Register'),true);

3.2、按照下面的代码修改PHPExcel代码目录里的Autoloader.php文件

  1. public static function Register() {
  2. /*
  3. if (function_exists('__autoload')) {
  4. //Register any existing autoloader function with SPL, so we don't get any clashes
  5. spl_autoload_register('__autoload');
  6. }
  7. //Register ourselves with SPL
  8. return spl_autoload_register(array('PHPExcel_Autoloader', 'Load'));
  9. */
  10. $functions = spl_autoload_functions();
  11. foreach ( $functions as  $function)
  12. spl_autoload_unregister($function);
  13. $functions = array_merge(array(array('PHPExcel_Autoloader','Load')),$functions);
  14. foreach ( $functions as $function)
  15. $x = spl_autoload_register($function);
  16. return $x;
  17. }    //    function Register()

3.3、在需要使用PHPExcel时使用以下代码

  1. $filePath = '/home/public_html/sqt/protected/data/queueSql/company.xls';
  2. spl_autoload_unregister(array('YiiBase', 'autoload'));
  3. $phpExcelPath = Yii::getPathOfAlias('application.extensions.PHPExcel.PHPExcel');
  4. include($phpExcelPath . DIRECTORY_SEPARATOR . 'IOFactory.php');
  5. spl_autoload_register(array('YiiBase', 'autoload'));
  6. $PHPExcel = PHPExcel_IOFactory::load( $filePath);
 

3.4、只要设置Yii::$enableIncludePath为false,第三方类库就有了执行自己的autoload方法的机会,并且不需要配置config/main.php,非常方便灵活

  1. Yii::$enableIncludePath = false;
  2. Yii::import('application.extensions.PHPExcel.PHPExcel', 1);
-------------------------------------------------------------------------------
导入Excel文件方法
  1. public function actionLoad() {
  2. if(isset($_POST['submit'])) {
  3. $file = CUploadedFile::getInstanceByName('file');//获取上传的文件实例
  4. if($file->getType() == 'application/vnd.ms-excel') {
  5. $excelFile = $file->getTempName();//获取文件名
  6. //这里就是导入PHPExcel包了,要用的时候就加这么两句,方便吧
  7. Yii::$enableIncludePath = false;
  8. Yii::import('application.extensions.PHPExcel.PHPExcel', 1);
  9. $phpexcel = new PHPExcel;
  10. $excelReader = PHPExcel_IOFactory::createReader('Excel5');
  11. $phpexcel = $excelReader->load($excelFile)->getSheet(0);//载入文件并获取第一个sheet
  12. $total_line = $phpexcel->getHighestRow();
  13. $total_column = $phpexcel->getHighestColumn();
  14. for ($row = 2; $row <= $total_line; $row++) {
  15. $data = array();
  16. for ($column = 'A'; $column <= $total_column; $column++) {
  17. $data[] = trim($phpexcel->getCell($column.$row) -> getValue());
  18. }
  19. }
  20. }
  21. }
  22. }

yii phpexcel <转>的更多相关文章

  1. yii phpexcel自己主动生成文件保存到server上

    近期再整一个报表任务,每天必须把表导出来按excel格式发送邮件给管理员,利用phpexcel把表保存到server上.然后再通过phpmailer发送就ok. ob_end_clean();     ...

  2. Yii中使用PHPexcel获取excel中数据

    1.view中代码如下: <form name="frmBatchSettle" id="" action="" method=&qu ...

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

    最近在研究PHP的Yii框架,很喜欢,碰到导出Excel的问题,研究了一下,就有了下面的方法: 1.首先在config\main.php中添加对PHPExcel的引用,我的方式是这样: 1 2 3 4 ...

  4. Yii中使用PHPExcel导出Excel

    最近在研究PHP的Yii框架,很喜欢,碰到导出Excel的问题,研究了一下,就有了下面的方法: 1.首先在config/main.php中添加对PHPExcel的引用,我的方式是这样: // auto ...

  5. 在Yii框架中使用PHPExcel

    PHPExcel是一个比较好用的php读取excel文件的类库,今天遇到了在yii中如何加载PHPExcel类文件的问题,因为Yii的autoload机制是安装类名去找文件,即文件名就是相应的类名,而 ...

  6. YII使用PHPExcel导入Excel文件的方法

    1.下载phpexcel,将压缩包中的classes复制到protected/extensions下并修改为PHPExcel. 2.修改YII配置文件config/main.php 'import'= ...

  7. Yii 集成 PHPExcel读取Excel文件

    PHPexcel官方下载以后,放入Yii的protected\extensions\phpexcel下面 try { spl_autoload_unregister(array('YiiBase', ...

  8. PHPExcel yii2 加载使用

    除了用composer 包管理组件的方式外 我们还可以使用 直接最原始的加载方式---超级简单 1.PHPExcel上下载最新的PHPExcel http://phpexcel.codeplex.co ...

  9. PHPExcel中文开发手册翻译版(2)

    2016年8月18日12:45:14 请注意这个是粗翻译版,仅供参考,不是精校版 精校版后面才会更新 PHPExcel开发者文档 1.目录 2. 4先决条件 2.1.软件要求4 2.2.安装说明4 2 ...

随机推荐

  1. Java中的自动拆箱装箱(Autoboxing&Unboxing)

    一.基本类型打包器 1.基本类型:long.int.double.float.boolean 2.类类型:Long.Integer.Double.Float.Boolean 区别:基本类型效率更高,类 ...

  2. Unity 网络斗地主 牌的一些算法

    Unity 网络斗地主  牌的一些算法 在这儿说一下,我的项目是用svn的方式,上传在https://v2.svnspot.com/18666451713.doudizhu这个svn上,大家可以下载T ...

  3. zabbix 默认item采集使用被动模式 需要改为主动模式

    数据采集的工作模式可以分为被动模式(服务器端到客户端采集数据) 主动模式(客户端主动上报数据到服务器端) 服务器配置: DBHost=192.168.32.55 DBName= zabbix DBUs ...

  4. 分页SQL模板

    select * from ( select rownum as rn ,a.* from ( select * from page a where object_id >1000 and ow ...

  5. POJ3126 Prime Path(BFS)

    题目链接. AC代码如下: #include <iostream> #include <cstdio> #include <cstring> #include &l ...

  6. 「Poetize5」水叮当的舞步

    Description 水叮当得到了一块五颜六色的格子形地毯作为生日礼物,更加特别的是,地毯上格子的颜色还能随着踩踏而改变. 为了讨好她的偶像虹猫,水叮当决定在地毯上跳一支轻盈的舞来卖萌~~~ 地毯上 ...

  7. POJ-3261-Milk Patterns(后缀数组)

    题意: 给定一个字符串,求至少出现k 次的最长重复子串,这k 个子串可以重叠. 分析: 先二分答案,然后将后缀分成若干组. 不同的是,这里要判断的是有没有一个组的后缀个数不小于k. 如果有,那么存在k ...

  8. codeforce-191E-Thwarting Demonstrations(树状数组+二分+离散)

    题意: 求第K 大连续区间 分析: 二分答案,再n * log(n)判断有几个区间的区间和大于mid,然后调整上下界,使这个值不断的接近k. 判断符合条件的区间总数:线性扫描sum[n](前n项和) ...

  9. 图论(对偶图):COGS 470. [NOI2010]海拔

    470. [NOI2010]海拔 ★★★☆   输入文件:altitude.in   输出文件:altitude.out   简单对比 时间限制:2 s   内存限制:512 MB 海拔 [问题描述] ...

  10. Delphi NativeXml用法攻略 转

    NativeXml可以在官网上下载,下载后将文件夹放在指定地方,打开DELPHI在其环境变量中引用NativeXml路径,然后在程序中引用NativeXml单元,我们就可以使用NativeXml了. ...