yii phpexcel <转>

原文详情参见 这里

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

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

[php] view plaincopy

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

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

[php] view plaincopy

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

修改为

[php] view plaincopy

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

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

[php] view plaincopy

  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时使用以下代码

[php] view plaincopy

  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,非常方便灵活

[php] view plaincopy

  1. Yii::$enableIncludePath = false;
  2. Yii::import(‘application.extensions.PHPExcel.PHPExcel‘, 1);

-------------------------------------------------------------------------------
导入Excel文件方法

[php] view plaincopy

  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. }
时间: 2024-08-07 21:19:57

yii phpexcel <转>的相关文章

yii phpexcel自动生成文件保存到服务器上

最近再整一个报表任务,每天必须把表导出来按excel格式发送邮件给管理员,利用phpexcel把表保存到服务器上,然后再通过phpmailer发送就ok. ob_end_clean(); ob_start(); $objectPHPExcel = new PHPExcel(); $objectPHPExcel->setActiveSheetIndex(0); $objectPHPExcel->setActiveSheetIndex(0)->setCellValue("A$i&q

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

最近在研究PHP的Yii框架,很喜欢,碰到导出Excel的问题,研究了一下,就有了下面的方法: 1.首先在config\main.php中添加对PHPExcel的引用,我的方式是这样: 1 2 3 4 5 6 7 8 // autoloading model and component classes     'import'=>array(                  'application.models.*',         'application.components.*',

基于YII框架的PHPExcel导出

public function actionOutexceInventoryList(){        ob_end_clean();        ob_start();        /** PHPExcel */        //Yii::import('application.vendors.*');        include_once(dirname(dirname(__FILE__)).'/extensions/PHPExcel.php');        include_o

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

1.下载phpexcel,将压缩包中的classes复制到protected/extensions下并修改为PHPExcel. 2.修改YII配置文件config/main.php [php] view plaincopy 'import'=>array( 'application.extensions.PHPExcel.PHPExcel', ), (以下处理PHPExcel autoload和YII autoload相冲突的方法任选其一,推荐第4种,最符合YII标准) 3.1.修改PHPExc

Yii 集成 PHPExcel读取Excel文件

PHPexcel官方下载以后,放入Yii的protected\extensions\phpexcel下面 try { spl_autoload_unregister(array('YiiBase', 'autoload')); $phpExcelPath = Yii::getPathOfAlias('application.extensions.phpexcel.PHPExcel'); include($phpExcelPath . DIRECTORY_SEPARATOR . 'IOFactor

Yii引入PHPExcel修改其自动加载方法

修改PHPEXCEL目录下的Autoload.php这个文件,在每次使用PHPExcel的类时关闭Yii的自动加载类,否则的话会因为加载规则的不一致(如yii一般要求类的名字必须是xxController,方法要是actionXXX,而PHPExcel是xx_xxx_xxxx)而起冲突报错. [php] view plaincopyspl_autoload_unregister(array('YiiBase','autoload')); // 取消自动加载 ,就不会报错了PHPExcel_Aut

在Yii框架中使用PHPExcel

PHPExcel是一个比较好用的php读取excel文件的类库,今天遇到了在yii中如何加载PHPExcel类文件的问题,因为Yii的autoload机制是安装类名去找文件,即文件名就是相应的类名,而PHPExcel的类文件命名方式则是:dir_dir_classname.php,即文件名把文件的目录名都记录了,这种命名方式yii肯定识别不了.怎么办? 其实PHPExcel也有自己的autoload方法(PHPExcel_Autoloader::load() ),通过查看源码发现它也是通过spl

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

PHPExcel开发者文档 1.目录2. 4先决条件2.1.软件要求42.2.安装说明42.3.入门42.4.有用的链接和工具42.4.1.的OpenXML / SpreadsheetML中42.4.2.常见问题52.4.3. 6教程3.建筑73.1. 7示意性3.2.延迟加载器73.3.电子表格在内存中73.4.读者和作家73.5.流利的接口84.创建电子表格104.1.该PHPExcel 10级4.1.1.从文件加载10工作簿4.1.2.创建一个新的工作簿104.2.配置设置104.2.1.

PHPExcel 导出表格 不知道好不好用

PHPExcel类是php一个excel表格处理插件了,下面我来给大家介绍利用PHPExcel类来导入与导出excel表格的应用方法,有需要了解的朋友不防参考参考(PHPExcel自己百度下载这里不介绍了). 导出Excel用法 //设置环境变量(新增PHPExcel) set_include_path('.'. PATH_SEPARATOR . Yii::app()->basePath.'/lib/PHPExcel' . PATH_SEPARATOR . get_include_path())