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. (转)sql的join图解

    假设我们有两张表,Table A是左边的表,Table B是右边的表. 其各有四条记录,其中有两条记录是相同的,如下所示: 1 id name       id  name 2 -- ----     ...

  2. 根据表结构自动生成JavaBean,史上最强最专业的表结构转JavaBean的工具(第2版)

             目录:                 第1版:http://blog.csdn.net/vipbooks/article/details/51912143              ...

  3. Makefile条件推断 ——————————【Badboy】

    使用条件推断,能够让make依据执行时的不同情况选择不同的执行分支. 条件表达式能够是比較变量的值,或是比較变量和常量的值. 一.演示样例 以下的样例,推断$(CC)变量是否"gcc&quo ...

  4. Nginx 之六: Nginx服务器的正向及反向代理功能

    一:Nginx作为正向代理服务器: 1.正向代理:代理(proxy)服务也可以称为是正向代理,指的是将服务器部署在公司的网关,代理公司内部员工上外网的请求,可以起到一定的安全作用和管理限制作用,正向代 ...

  5. 扩展方法(深入理解c#)

    1. 静态类到扩展方法: 许多方法可能都适合转为扩展方法,只要具有以下特征: 1)你想为一个类型添加一些成员: 2)你不需要为类型的实例添加更多的数据: 3)你不能改变类型本身,因为是别人的代码 2. ...

  6. 基于duxshop遍历无限级分销用户的纵向递归

    /**获取基准数据 * @param $ids 父id 多个逗号分隔 * @return array */ public function saleBase($ids) { $data=$this-& ...

  7. Objective-C 学习笔记(一) 语言程序结构

    Objective-C语言程序结构 “Hello World”简单示例 #import <Foundation/Foundation.h> //预处理命令,它告诉Objective-C语言 ...

  8. Decker hello world

    Docker 允许在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序. 输出Hello world root@ranxf:/home/ranxf# docker run ...

  9. vue 移动端,页面左右页面切换效果(切换过程中会出现白屏效果,布吉岛怎么优化,后来就发布前就弃用了)

    <transition name="left"> <router-view v-if="getCms" class="Router& ...

  10. ERROR C2676

    直接上代码: nl.h #ifndef NL_H #define NL_H #include <iosfwd> namespace ZJ { /** Insert a newline ch ...