Symfony2框架中PHPExcel的用法

    说到PHPExcl,确实是一个功能强大的php插件,在网上一收一大把相关教程。最近在Symfony2中用到它,感觉内容还是挺多的;而且Symfony2将此插件做了二次封装,想用它,确实得做些工作。我在网上找了很久,没发现有Symfony2框架的PHPExcl的用法,苦老了,这框架里又不能直接用(Symfony2框架有严格的流程控制);最后找到一国外网站,专门有讲这款插件针对Symfony2框架的用法,参考了下,方法都被封装好了,很规矩,开发很快。下面我就来介绍一下这个插件的用法。

    

   

    做这个之前,你首先要创建好项目(创建好一个Bundle),相关教程可以参考:

    PHPExcel分为对Excel的导出和导入两种方法,我是参考此版本的Excel来讲的 https://github.com/liuggio/ExcelBundle,大家可以打开这个网站结合我的讲解来做。下面继续讲:

    安装(composer):首先得安装此插件,也就是composer的安装,可以收下composer的安装方法。方法如下(你也可以直接下载,拷贝文件夹到项目,最后需要配一下Symfony2,使他支持此插件):

    "require" : {
        "friendsofsymfony/user-bundle": "2.0.*@dev",
    }
 //实际在win命令行下输入下面代码即可:
 $ php composer.phar require friendsofsymfony/user-bundle:2.0.*@dev

       安装(phpexcelbundle):

    1 安装require

    "require" : {
        "liuggio/excelbundle": "~2.0",
    }


 //实际在win命令行下输入下面代码即可:
 $ php composer.phar require liuggio/excelbundle:~2.0

    2 配置 app/AppKernel.php

    $bundles = array(        
        // ...        
        new Liuggio\ExcelBundle\LiuggioExcelBundle(),    
    );


    PS:详细的安装第三方Bundle可以参考:http://9670708.blog.51cto.com/9660708/1591009 


    导出:导出方法很简单,在https://github.com/liuggio/ExcelBundle这里也有简单的介绍到,上面的步骤完成后,按照这个例子,你应该在你的(实际上就是将下面的内容拷贝到你写的任何一个model中)Symfony\Bundle\FrameworkBundle\Controller\DefaultController.php文件中直接复制以下代码即可使用(其他导入方法,可以在上面网站中寻找)

namespace YOURNAME\YOURBUNDLE\Controller;    
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class DefaultController extends Controller{    

     public function indexAction(){       
         //创建一个空Excel对象
         $phpExcelObject = $this->get('phpexcel')->createPHPExcelObject();   
         //设置文件属性   
         $phpExcelObject->getProperties()
             ->setCreator("liuggio")
             ->setLastModifiedBy("Giulio De Donato")
             ->setTitle("Office 2005 XLSX Test Document")
             ->setSubject("Office 2005 XLSX Test Document")
             ->setDescription("Test document for Office 2005 XLSX, generated using PHP classes.")      
             ->setKeywords("office 2005 openxml php")
             ->setCategory("Test result file"); 
         //设置文件内容
         $phpExcelObject->setActiveSheetIndex(0)
             ->setCellValue('A1', 'Hello')
             ->setCellValue('B2', 'world!');
         //设置当前表的标题   
         $phpExcelObject->getActiveSheet()
             ->setTitle('Simple');         
         $phpExcelObject->setActiveSheetIndex(0);
         //创建一个写对象    
         $writer = $this->get('phpexcel')->createWriter($phpExcelObject, 'Excel5');      
         $response = $this->get('phpexcel')->createStreamedResponse($writer);
         //设置HTTP协议(创建下载文件)   
         $response->headers->set('Content-Type', 'text/vnd.ms-excel; charset=utf-8');    
         $response->headers->set('Content-Disposition', 'attachment;filename=stream-file.xls');        
         $response->headers->set('Pragma', 'public');        
         $response->headers->set('Cache-Control', 'maxage=1');        
         return $response;            
    }
}

    

    

    导入:(导入就比较复杂了,但也不困难,只是需要设置的比较多),将一下函数复制,更改下文件名即可

public function import(){        
        
        $phpExcelObject = $this->get('phpexcel')->createPHPExcelObject($fliename);
        //$inputFileType = 'Excel2007';//这个是计xlsx的
        //指定为哪张表(默认第一张表)
        //$objWorksheet = $phpExcelObject->getActiveSheet("sheet1");
        $objWorksheet = $phpExcelObject->getActiveSheet();
        //获取行数
        $highestRow = $objWorksheet->getHighestRow();
        $highestColumn = $objWorksheet->getHighestColumn();
        //获取列数
        $highestColumnIndex = 12;
        //递归输出Excel内容
        $headtitle=array();
        for ($row = 1;$row <= $highestRow;$row++)
        {
            $strs=array();
            for ($col = 0;$col < $highestColumnIndex;$col++)
            {
                $strs[$col] =$objWorksheet->getCellByColumnAndRow($col, $row)->getValue();
            }
           $headtitle[$row]=$strs;
        }
        return $headtitle;
}

    

    这样就可以导入excel 文件了,但是在有多张excel时会有问题,会找不到第二张表,所以这个时候得做些处理:$objWorksheet = $phpExcelObject->getActiveSheet("??");//里面加入参数即可!

 

    更多phpexcel的方法可以在你的安装文件里找到(方法和例子)

你可能感兴趣的:(symfony2,PHPExcl)