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导入Excel文件的方法的更多相关文章

  1. phpexcel导入excel文件报the filename xxx is not recognised as an OLE file错误。

    工作中频繁会用phpexcel类导入excel文件的数据到数据库,目前常用的excel文件格式有:xls.csv.xlsx. 刚开始,针对xls文件,使用如下程序,能正常运行: $objReader ...

  2. 使用phpexcel导入excel文件种的时期数据时数据导入格式

    在使用phpexcel导入类似于 YYYY-MM-DD HH:ii:ss格式的数据时,导入成功以后会发现导入的数据其实是类似于42085.746516204格式的数据( excel在存储时间类型的数据 ...

  3. Yii 集成 PHPExcel读取Excel文件

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

  4. Thinkphp 用PHPExcel 导入Excel

    搞了个简单的Excel导入, 用的是PHPExcel(百科:用来操作Office Excel文档的一个PHP类库, 基于微软的OpenXML标准和PHP语言) 好, 不说了, 开始吧... 首先得有P ...

  5. C# Aspose.Cells方式导入Excel文件

    读取Excel 类 我返回的是DataTable 类型 也可以返回DataSet类型 public class XlsFileHelper { public DataTable ImportExcel ...

  6. ThinkPHP导入Excel文件(使用PHPExcel)

    一. 主要知识点,用PHPExcel导入Excel数据经过这几天测试还是可以,xls,xlsx都可以获取Excel的数据.下载地址:http://phpexcel.codeplex.com/ O.开发 ...

  7. .Net MVC 导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) 通过MVC控制器导出导入Excel文件(可用于java SSH架构)

    .Net MVC  导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) [原文地址] 通过MVC控制器导出导入Excel文件(可用于java SSH架构)   public cl ...

  8. 使用PHPExcel实现Excel文件的导入和导出(模板导出)

    在之前有写过一篇文章讲述了使用PHP快速生成excel表格文件并下载,这种方式生成Excel文件,生成速度很快,但是有缺点是:1.单纯的生成Excel文件,生成的文件没有样式,单元格属性(填充色,宽度 ...

  9. tp3.2.3运用phpexcel将excel文件导入mysql数据库

    1,下载PHPExcel 2,配置将下载好的PHPExcel文件与PHPExcel.php 放到thinkphp 根目录 include/Library/Org/Util/下面 3,同时将PHPExc ...

随机推荐

  1. 一个经典的js中关于块级作用域和声明提升的问题

    function functions(flag) { if (flag) { function getValue() { return 'a'; } } else { function getValu ...

  2. private static

    static: 静态成员,不能实例化,在你运行的时候他自己在内存中开辟了块空间,不用new, 有点像全局变量 private static  和  public static 都是静态变量,在类加载时 ...

  3. Girl Develop It Chapter Leaders at 2015 Annual Leadership Summit

    Girl Develop It Chapter Leaders at 2015 Annual Leadership Summit Corinne Warnshuis, Executive Direct ...

  4. ECStore图片存储采用阿里云OSS(图片存储)服务

    主要功能:ECStore图片存储采用阿里云OSS(图片存储)服务   适用版本:ECStore 授权方式:授权域名使用,付费插件 联系方式: QQ 275553385  mail: jimingson ...

  5. Hadoop优先级调度

    当同时在集群中运行多个作业时,默认情况下,Hadoop将提交的作业放入一个FIFO,一个作业结束后,Hadoop就启动下一个作业. 当一个运行时间长但是优先级较低的作业先于运行时间短而优先级较高的作业 ...

  6. OpenGL编译问题随手记

    1.error C2381: "exit" : 重定义:__declspec(noreturn) 不同 编译OpenGL   Red   Book   的例子时出现错误, stdl ...

  7. 关于IIS和.NET 4.0的问题总结(转)

    注册asp.net 4.0 到iis   如果没有按照正常的先装iis后装.net的顺序,可以使用此命令重新注册一下 运行->cmd Microsoft Windows [版本 6.1.7601 ...

  8. 在ubuntu下设置eclipse开发STM32等嵌入式设备

    之前为了能够让ROS与底层能够顺利通讯,我采用可开源开发板arduino ,因为arduino有ROS的库,能够按照ROS wiki上所给的教程就可以顺利的开发,但由于arduino的局限性,我觉得是 ...

  9. ap143 led修改

    以前的硬件版本只使用了一个eth口,新的板子增加了一个eth口,并且增加了响应的通信时使用的灯. led修改涉及到一下的内容: (1)led 对应的gpio口(这个需要根据原理图来定义) 需要修改的源 ...

  10. Python数据预处理—归一化,标准化,正则化

    关于数据预处理的几个概念 归一化 (Normalization): 属性缩放到一个指定的最大和最小值(通常是1-0)之间,这可以通过preprocessing.MinMaxScaler类实现. 常用的 ...