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. Linux环境快速搭建RocketMQ双Master模式

    RocketMQ的集群部署方式有多种,其中包括单个Master.多个Master.多Master多Slave模式(异步复制)以及多Master多Slave模式(同步双写).本次以多Master集群模式 ...

  2. UIView类绘图出现错误提示

    一:问题: Jan 16 15:49:53  CUBOT Band Ⅲ[2082] <Error>: CGContextSetLineWidth: invalid context 0x0. ...

  3. ECMAScript6之Set结构和Map结构

    set数据结构 ES6提供了一个新的数据结构,Set,Set和Array数组相似,但是Set里没有重复的数据,可以说是一个值的集合. 同时,Set数据结构有以下属性和方法: size:返回成员总数 a ...

  4. 又遇Release编译的一坑 -- 应用程序正常初始化(0xc000007b)失败。请单击“确定”,终止应用程序。

    项目中使用了xlslib库,以动态库形式编译,由于它没有生成链接库lib文件,所以官方提供的demo中有createDLL这个小程序用来生成lib文件.然而我又 no zuo no die了一次.   ...

  5. 花点时间搞清top、clientTop、scrollTop、offsetTop

    [转贴]花点时间搞清top.clientTop.scrollTop.offsetTop   scrollHeight: 获取对象的滚动高度. scrollLeft:设置或获取位于对象左边界和窗口中目前 ...

  6. [SOJ] shortest path in unweighted graph

    Description 输入一个无向图,指定一个顶点s开始bfs遍历,求出s到图中每个点的最短距离. 如果不存在s到t的路径,则记s到t的距离为-1.   Input 输入的第一行包含两个整数n和m, ...

  7. github本地库及clone常用命令

    新建本地库 1. cd d: 2. mkdir git 3. cd git 4. git init 5. git remote add  origin git@github.com:swportal/ ...

  8. java中system.out.println()是什么意思

    在Java编程中,我们常常用System.out.println()方法来输出字符串,也许我们都已经猜到println()是方法名,但System是什么,out又是什么呢?这里就涉及用到一个stati ...

  9. Python----文件的IO操作

    一.文件操作 r 以只读方式打开文件.文件的指针将会放在文件的开头.这是默认模式. rb 以二进制格式打开一个文件用于只读.文件指针将会放在文件的开头.这是默认模式. r+ 打开一个文件用于读写.文件 ...

  10. 无法启动T-SQL调试。未能连接到计算机"."。这是在主机名解析时通常出现的暂时错误……

    今天在按在SSMS中,按F11进行断点调试时,弹出错误:"无法启动T-SQL调试.未能连接到计算器".".这是在主机名解析时通常出现的暂时错误--", 如下图: ...