Symfony 2フレームワークにおけるPHPExcelの使い方

5104 ワード

PHPExclといえば、確かに強力なphpプラグインで、ネット上で大きなチュートリアルを受け取っています.最近Symfony 2で使われていて、内容が多いような気がします.そしてSymfony 2はこのプラグインを二次パッケージして、それを使いたいなら、確かに仕事をしなければなりません.私はネット上で長い間探して、Symfony 2フレームワークのPHPExclの使い方があることを発見していません.苦労して、このフレームワークの中で直接使うことはできません(Symfony 2フレームワークには厳格なプロセス制御があります).最后に1つの国外のウェブサイトを探し当てて、もっぱらこのプラグインがSymfony 2のフレームワークに対する使い方を言って、参考にして、方法はすべてカプセル化されて、とても規則的で、開発はとても速いです.このプラグインの使い方を紹介します.
    
   
これを行う前に、まずプロジェクトを作成します(Bundleを作成します).関連するチュートリアルは以下のように参照できます.
PHPExcelは、Excelのエクスポートとインポートの2つの方法に分かれています.このバージョンのExcelを参考にしてみましたhttps://github.com/liuggio/ExcelBundleああ、皆さんはこのサイトを開いて私の説明に合わせてすることができます.以下に続きます.
インストール(composer):まずこのプラグイン、すなわちcomposerのインストールをインストールしなければなりません.composerのインストール方法を受け取ることができます.方法は次のとおりです(直接ダウンロードして、フォルダをプロジェクトにコピーすることもできます.最後にSymfony 2をインストールして、このプラグインをサポートする必要があります).
    "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ここでは、上記の手順が完了したら、この例に従って、(実際には以下の内容をあなたが書いたモデルにコピーする)SymfonyBundleFrameworkBundleControllerDefaultController.phpファイルでは、次のコードを直接コピーして使用できます(他のインポート方法では、上記のWebサイトで探すことができます).
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がある場合は問題があり、2枚目のテーブルが見つからないため、$objWorksheet=$phpExcelObject->getActiveSheet("?");//中にパラメータを入れればいい!
 
より多くのphpexcelの方法は、インストールファイルで見つけることができます(方法と例)