发布于 2014-12-29 08:58:18 | 1753 次阅读 | 评论: 0 | 来源: PHPERZ

这里有新鲜出炉的Symfony2教程,程序狗速度看过来!

Symfony开源的PHP开发框架

Symfony是一个基于MVC模式的面向对象的PHP5框架。Symfony允许在一个web应用中分离事务控制,服务逻辑和表示层。


本文为大家讲解的是如何在Symfony2框架使用PHPExcel的方法,感兴趣的同学参考下.

PHPexcel简介

PHPExcel 是用来操作Office Excel 文档的一个PHP类库,它基于微软的OpenXML标准和PHP语言。可以使用它来读取、写入不同格式的电子表格,如 Excel (BIFF) .xls, Excel 2007 (OfficeOpenXML) .xlsx, CSV, Libre/OpenOffice Calc .ods, Gnumeric, PDF, HTML等等。

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


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

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

{ ...,"require": {...,"friendsofsymfony/user-bundle": "2.0.*@dev"} }

    1.添加bundle到composer.json

    2.更新依赖包

    3.或执行更新所有依赖包

    4.你可以直接执行下面的命令来完成一样的工作

    5.配置很简单,在app/AppKernel.php文件中的$bundles数组中加入这样一个语句:new Liuggio\ExcelBundle\LiuggioExcelBundle(),


导出

导出方法很简单,在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的方法可以在你的安装文件里找到(方法和例子)



最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务