基於YII框架的PHPExcel導出

 public function actionOutexceInventoryList(){
       ob_end_clean();
       ob_start();

       /** PHPExcel */
       //Yii::import('application.vendors.*');
       include_once(dirname(dirname(__FILE__)).'/extensions/PHPExcel.php');
       include_once(dirname(dirname(__FILE__)).'/extensions/PHPExcel/Writer/Excel2007.php');
       $objPHPExcel = new PHPExcel();

       $objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
           ->setLastModifiedBy("Maarten Balliauw")
           ->setTitle("Office 2007 XLSX Test Document")
           ->setSubject("Office 2007 XLSX Test Document")
           ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
           ->setKeywords("office 2007 openxml php")
           ->setCategory("Test result file");

     //  $objPHPExcel->setActiveSheetIndex(0)首行字段名稱
        $objPHPExcel->getActiveSheet()->setCellValue('A1', '院內編碼');
         $objPHPExcel->getActiveSheet()->setCellValue('B1', '名稱');
          $objPHPExcel->getActiveSheet() ->setCellValue('C1', '廠商');
           $objPHPExcel->getActiveSheet() ->setCellValue('D1', '規格');
          $objPHPExcel->getActiveSheet()  ->setCellValue('E1', '使用科室');
          $objPHPExcel->getActiveSheet()  ->setCellValue('F1', '啓用日期');
           $objPHPExcel->getActiveSheet() ->setCellValue('G1', '單價');
           $objPHPExcel->getActiveSheet() ->setCellValue('H1', '資金來源');
           $objPHPExcel->getActiveSheet() ->setCellValue('I1', '盤點狀態');
       //   $objPHPExcel->getActiveSheet()  ->setCellValue('J1', '存放地點');
       //   $objPHPExcel->getActiveSheet()  ->setCellValue('K1', '盤點結果');
       //居中,顏色
       $objPHPExcel->setActiveSheetIndex(0)->getStyle('A1:I1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
       $objPHPExcel->setActiveSheetIndex(0)->getStyle('A1:I1')->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_BLUE);

       $param = array();
       $stocks_id = Yii::app()->request->getParam('stocks_id');
       $criteria = new CDbCriteria();
       $criteria->addCondition( 'stocks_id='.$stocks_id);
       $param['stockList'] = Stocksproduct::model()->findAll($criteria);
       $param['stocks_id'] = $stocks_id;
       foreach( $param['stockList'] as $key=>$val ){
           $key =$key+2;
           if($val['status']==1){
               $status = "未盤點";
           }elseif( $val['status']==2 ){
               $status = "盤虧";
           }elseif( $val['status']==3 ){
               $status = "盤實";
           }elseif( $val['status']==4 ){
               $status = "盤盈";
           }
           $card = FormatHelper::getCardInfo( $val['cardId'] );
           //設置單元格格式爲文本格式
           $objPHPExcel->getActiveSheet()->setCellValueExplicit("A$key", $card->assetsId,PHPExcel_Cell_DataType::TYPE_STRING);
           $objPHPExcel->getActiveSheet()->setCellValueExplicit("B$key", $card->assetsName,PHPExcel_Cell_DataType::TYPE_STRING);
           $objPHPExcel->getActiveSheet()->setCellValueExplicit("C$key", $card->manufacturer,PHPExcel_Cell_DataType::TYPE_STRING);
           $objPHPExcel->getActiveSheet()->setCellValueExplicit("D$key", $card->modelSpecifications,PHPExcel_Cell_DataType::TYPE_STRING);
           $objPHPExcel->getActiveSheet()->setCellValueExplicit("E$key", $card->name_useOffice,PHPExcel_Cell_DataType::TYPE_STRING);
           $objPHPExcel->getActiveSheet()->setCellValueExplicit("F$key", $card->useDate,PHPExcel_Cell_DataType::TYPE_STRING);
           $objPHPExcel->getActiveSheet()->setCellValueExplicit("G$key", $card->assetValue,PHPExcel_Cell_DataType::TYPE_STRING);
           $objPHPExcel->getActiveSheet()->setCellValueExplicit("H$key", $card->suggest_fundingSources,PHPExcel_Cell_DataType::TYPE_STRING);
           $objPHPExcel->getActiveSheet()->setCellValueExplicit("I$key", $status,PHPExcel_Cell_DataType::TYPE_STRING);
          // $objPHPExcel->getActiveSheet()->setCellValueExplicit("J$key", $card->storageLocation,PHPExcel_Cell_DataType::TYPE_STRING);
         //  $objPHPExcel->getActiveSheet()->setCellValueExplicit("k$key",  $status ,PHPExcel_Cell_DataType::TYPE_STRING);

       }

       $K ="I".$key;
       //設置從第二行起全部左對齊
        $objPHPExcel->setActiveSheetIndex(0)->getStyle("A2:$K")->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
       //設置寬度
       $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('A')->setWidth(15);
       $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(15);
       $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('C')->setWidth(25);
       $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('D')->setWidth(15);
       $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('E')->setWidth(15);
       $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('F')->setWidth(10);
       $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('G')->setWidth(20);
       $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('H')->setWidth(20);
       $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('I')->setWidth(20);
     //  $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('J')->setWidth(25);
     //  $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('K')->setWidth(10);

       //設置邊框
      // $objPHPExcel->getActiveSheet()->getStyle("A1:$K" )->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
      // $objPHPExcel->getActiveSheet()->getStyle("A1:$K" )->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
      // $objPHPExcel->getActiveSheet()->getStyle("A1:$K" )->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
       //$objPHPExcel->getActiveSheet()->getStyle("A1:$K" )->getBorders()->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);

       $objPHPExcel->getActiveSheet()->setTitle('盤點單');
       $objPHPExcel->setActiveSheetIndex(0);
//          $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
//          $objWriter->save(str_replace('.php', '.xlsx', __FILE__));
       $objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);

       header("Pragma: public");
       header("Expires: 0");
       //header('Content-Type: application/vnd.ms-excel;charset=utf8');
       header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
       header("Content-Type:application/force-download");
       header("Content-Type:application/vnd.ms-execl");
       header("Content-Type:application/octet-stream");
       header("Content-Type:application/download");
       $fireName = $stocks_id.'-盤點單';
       header("Content-Disposition:attachment;filename=$fireName.xls");
       header("Content-Transfer-Encoding:binary");
       $objWriter->save("php://output");

       Yii::app()->end();
       spl_autoload_register(array('YiiBase','autoload'));
   }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章