2014-06-18 2 views
0

나는 CodeIgniter를 나란히 PHPExcel 버전 1.8.0을 사용하고 내가 뭘하려고 클론이며, 3 개의 다른 장을 작성하고있다 : 나는 시트의 3 종류에 결과를 얻을PHPExcel 논리 순서 오류

public function generateReport($obra, $todosEnsayes, $pNombre) { 



    $this->load->library('PHPExcel/PHPExcel'); 


    $objPHPexcel = new PHPExcel(); 


    $objReader = PHPExcel_IOFactory::createReader('Excel2007'); 
    $objPHPexcel = $objReader->load('application/plantillas_excel/reporte_grafico2.xlsx'); 

    $objPHPexcel->getProperties() 
         ->setCreator('New system'    ) 
         ->setLastModifiedBy('NewSystem'  ) 
         ->setTitle('NewSystem' ) 
         ->setSubject('NewSystem') 
         ->setDescription('NewSystem') 
         ->setKeywords("Excel Office 2007 openxml php" ) 
         ->setCategory("NewSystem"  ); 



    $hoja = 0; 
    $inicial = 18; 
    $arrayNumero = array(); 
    $arrayValor = array(); 
    $arrayNombre = array(); 
    $arrayValor2 = array(); 
    $arrayDesv = array(); 

    $tramo = 'TRAMO: KM '.$obra->km_inicial.'+'.$obra->mt_inicial.' - '.$obra->km_final .'+'.$obra->mt_final; 

    foreach($todosEnsayes as $key=>$ensaye) { 

      if (($key % 20) == 0) 
      { 
      $newSheet = clone $objPHPexcel->getSheetByName("PLANTILLA1"); 
      $newSheet->setTitle('GRAF SYC-LL'); 
      $objPHPexcel->setActiveSheetIndex($hoja); 
      $objWorksheet = $objPHPexcel->getActiveSheet(); 
      $objWorksheet 
      ->setCellValue('A6', "Obra:".$obra->objeto) 
      ->setCellValue('A7', "Tramo:".$tramo); 
      $objWorksheet 
      ->setCellValue('A'.$inicial, $key) 
      ->setCellValue('B'.$inicial, '35') 
      ->setCellValue('C'.$inicial, 'SYC 2A CPA PRUEBA') 
      ->setCellValue('D'.$inicial, '35') 
      ->setCellValue('E'.$inicial, '1.72'); 
      array_push($arrayNumero, $key); 
      array_push($arrayValor, '35'); 
      array_push($arrayNombre, 'SYC 2A CPA PRUEBA'); 
      array_push($arrayValor2, '35'); 
      array_push($arrayDesv, '1.72'); 



      $this->generarImagen($arrayNumero,$arrayValor,$arrayNombre,$arrayValor2,$arrayDesv); 

      $objDrawing = new PHPExcel_Worksheet_Drawing(); 
      $objDrawing->setWorksheet($objWorksheet); 
      $objDrawing->setName("name"); 
      $objDrawing->setDescription("Description"); 
      $objDrawing->setPath('imagefile.png'); 
      $objDrawing->setCoordinates('I8'); 
      $objDrawing->setOffsetX(1); 
      $objDrawing->setOffsetY(5); 


      $arrayNumero = array(); 
      $arrayValor = array(); 
      $arrayNombre = array(); 
      $arrayValor2 = array(); 
      $arrayDesv = array(); 
      $objPHPexcel->addSheet($newSheet, $hoja); 

      $inicial = 18; 
      } 
      else 
      { 
      $newSheet = clone $objPHPexcel->getSheetByName("PLANTILLA1"); 
      //$newSheet->setTitle('GRAF SYC-LL'); 
      //$objPHPexcel->addSheet($newSheet, $hoja); 
      $objPHPexcel->setActiveSheetIndex($hoja); 
      $objWorksheet = $objPHPexcel->getActiveSheet(); 
      $objWorksheet 
      ->setCellValue('A6', "Obra:".$obra->objeto) 
      ->setCellValue('A7', "Tramo:".$tramo); 
      $objWorksheet 
      ->setCellValue('A'.$inicial, $key) 
      ->setCellValue('B'.$inicial, '35') 
      ->setCellValue('C'.$inicial, 'SYC 2A CPA PRUEBA') 
      ->setCellValue('D'.$inicial, '35') 
      ->setCellValue('E'.$inicial, '1.72'); 

      array_push($arrayNumero, $key); 
      array_push($arrayValor, '35'); 
      array_push($arrayNombre, 'SYC 2A CPA PRUEBA'); 
      array_push($arrayValor2, '35'); 
      array_push($arrayDesv, '1.72'); 

      $inicial++; 
      } 

    } 

    $this->generarImagen($arrayNumero,$arrayValor,$arrayNombre,$arrayValor2,$arrayDesv); 

      $objDrawing = new PHPExcel_Worksheet_Drawing(); 
      $objDrawing->setWorksheet($objWorksheet); 
      $objDrawing->setName("name"); 
      $objDrawing->setDescription("Description"); 
      $objDrawing->setPath('imagefile.png'); 
      $objDrawing->setCoordinates('I8'); 
      $objDrawing->setOffsetX(1); 
      $objDrawing->setOffsetY(5); 


      $arrayNumero = array(); 
      $arrayValor = array(); 
      $arrayNombre = array(); 
      $arrayValor2 = array(); 
      $arrayDesv = array(); 

    $hoja++; 

    foreach($todosEnsayes as $key=>$ensaye) { //SE RECORREN LOS ENSAYES 

      if (($key % 20) == 0) 
      { 
      $newSheet = clone $objPHPexcel->getSheetByName("PLANTILLA2"); 
      $newSheet->setTitle('GRAF SYC-CBR'); 
      $objPHPexcel->setActiveSheetIndex($hoja); 
      $objWorksheet = $objPHPexcel->getActiveSheet(); 
      $objWorksheet 
      ->setCellValue('A6', "Obra:".$obra->objeto) 
      ->setCellValue('A7', "Tramo:".$tramo); 
      $objWorksheet 
      ->setCellValue('A'.$inicial, $key) 
      ->setCellValue('B'.$inicial, '40') 
      ->setCellValue('C'.$inicial, 'SYC 2A CPA PRUEBA') 
      ->setCellValue('D'.$inicial, '40') 
      ->setCellValue('E'.$inicial, '1.50'); 

      array_push($arrayNumero, $key); 
      array_push($arrayValor, '35'); 
      array_push($arrayNombre, 'SYC 2A CPA PRUEBA'); 
      array_push($arrayValor2, '35'); 
      array_push($arrayDesv, '1.72'); 



      $this->generarImagen($arrayNumero,$arrayValor,$arrayNombre,$arrayValor2,$arrayDesv); 

      $objDrawing = new PHPExcel_Worksheet_Drawing(); 
      $objDrawing->setWorksheet($objWorksheet); 
      $objDrawing->setName("name"); 
      $objDrawing->setDescription("Description"); 
      $objDrawing->setPath('imagefile.png'); 
      $objDrawing->setCoordinates('I8'); 
      $objDrawing->setOffsetX(1); 
      $objDrawing->setOffsetY(5); 


      $arrayNumero = array(); 
      $arrayValor = array(); 
      $arrayNombre = array(); 
      $arrayValor2 = array(); 
      $arrayDesv = array(); 

      $objPHPexcel->addSheet($newSheet, $hoja); 

      $inicial = 18; 
      } 
      else 
      { 
      $newSheet = clone $objPHPexcel->getSheetByName("PLANTILLA2"); 
      //$newSheet->setTitle('GRAF SYC-LL'); 
      //$objPHPexcel->addSheet($newSheet, $hoja); 
      $objPHPexcel->setActiveSheetIndex($hoja); 
      $objWorksheet = $objPHPexcel->getActiveSheet(); 
      $objWorksheet 
      ->setCellValue('A6', "Obra:".$obra->objeto) 
      ->setCellValue('A7', "Tramo:".$tramo); 
      $objWorksheet 
      ->setCellValue('A'.$inicial, $key) 
      ->setCellValue('B'.$inicial, '40') 
      ->setCellValue('C'.$inicial, 'SYC 2A CPA PRUEBA') 
      ->setCellValue('D'.$inicial, '40') 
      ->setCellValue('E'.$inicial, '1.50'); 

      array_push($arrayNumero, $key); 
      array_push($arrayValor, '35'); 
      array_push($arrayNombre, 'SYC 2A CPA PRUEBA'); 
      array_push($arrayValor2, '35'); 
      array_push($arrayDesv, '1.72'); 

      $inicial++; 
      } 

    } 

    $this->generarImagen($arrayNumero,$arrayValor,$arrayNombre,$arrayValor2,$arrayDesv); 

      $objDrawing = new PHPExcel_Worksheet_Drawing(); 
      $objDrawing->setWorksheet($objWorksheet); 
      $objDrawing->setName("name"); 
      $objDrawing->setDescription("Description"); 
      $objDrawing->setPath('imagefile.png'); 
      $objDrawing->setCoordinates('I8'); 
      $objDrawing->setOffsetX(1); 
      $objDrawing->setOffsetY(5); 


      $arrayNumero = array(); 
      $arrayValor = array(); 
      $arrayNombre = array(); 
      $arrayValor2 = array(); 
      $arrayDesv = array(); 

    $hoja++; 

    foreach($todosEnsayes as $key=>$ensaye) { //SE RECORREN LOS ENSAYES 

      if (($key % 20) == 0) 
      { 
      $newSheet = clone $objPHPexcel->getSheetByName("PLANTILLA3"); 
      $newSheet->setTitle('GRAF SYC-EXP'); 
      $objPHPexcel->setActiveSheetIndex($hoja); 
      $objWorksheet = $objPHPexcel->getActiveSheet(); 
      $objWorksheet 
      ->setCellValue('A6', "Obra:".$obra->objeto) 
      ->setCellValue('A7', "Tramo:".$tramo); 
      $objWorksheet 
      ->setCellValue('A'.$inicial, $key) 
      ->setCellValue('B'.$inicial, '35') 
      ->setCellValue('C'.$inicial, 'SYC 2A CPA PRUEBA') 
      ->setCellValue('D'.$inicial, '35') 
      ->setCellValue('E'.$inicial, '1.72'); 

      $objPHPexcel->addSheet($newSheet, $hoja); 

      array_push($arrayNumero, $key); 
      array_push($arrayValor, '35'); 
      array_push($arrayNombre, 'SYC 2A CPA PRUEBA'); 
      array_push($arrayValor2, '35'); 
      array_push($arrayDesv, '1.72'); 



      $this->generarImagen($arrayNumero,$arrayValor,$arrayNombre,$arrayValor2,$arrayDesv); 

      $objDrawing = new PHPExcel_Worksheet_Drawing(); 
      $objDrawing->setWorksheet($objWorksheet); 
      $objDrawing->setName("name"); 
      $objDrawing->setDescription("Description"); 
      $objDrawing->setPath('imagefile.png'); 
      $objDrawing->setCoordinates('I8'); 
      $objDrawing->setOffsetX(1); 
      $objDrawing->setOffsetY(5); 


      $arrayNumero = array(); 
      $arrayValor = array(); 
      $arrayNombre = array(); 
      $arrayValor2 = array(); 
      $arrayDesv = array(); 

      $inicial = 18; 
      } 
      else 
      { 
      $newSheet = clone $objPHPexcel->getSheetByName("PLANTILLA3"); 
      //$newSheet->setTitle('GRAF SYC-LL'); 
      //$objPHPexcel->addSheet($newSheet, $hoja); 
      $objPHPexcel->setActiveSheetIndex($hoja); 
      $objWorksheet = $objPHPexcel->getActiveSheet(); 
      $objWorksheet 
      ->setCellValue('A6', "Obra:".$obra->objeto) 
      ->setCellValue('A7', "Tramo:".$tramo); 
      $objWorksheet 
      ->setCellValue('A'.$inicial, $key) 
      ->setCellValue('B'.$inicial, '35') 
      ->setCellValue('C'.$inicial, 'SYC 2A CPA PRUEBA') 
      ->setCellValue('D'.$inicial, '35') 
      ->setCellValue('E'.$inicial, '1.72'); 

      array_push($arrayNumero, $key); 
      array_push($arrayValor, '35'); 
      array_push($arrayNombre, 'SYC 2A CPA PRUEBA'); 
      array_push($arrayValor2, '35'); 
      array_push($arrayDesv, '1.72'); 

      $inicial++; 
      } 

    } 

    $this->generarImagen($arrayNumero,$arrayValor,$arrayNombre,$arrayValor2,$arrayDesv); 

      $objDrawing = new PHPExcel_Worksheet_Drawing(); 
      $objDrawing->setWorksheet($objWorksheet); 
      $objDrawing->setName("name"); 
      $objDrawing->setDescription("Description"); 
      $objDrawing->setPath('imagefile.png'); 
      $objDrawing->setCoordinates('I8'); 
      $objDrawing->setOffsetX(1); 
      $objDrawing->setOffsetY(5); 


      $arrayNumero = array(); 
      $arrayValor = array(); 
      $arrayNombre = array(); 
      $arrayValor2 = array(); 
      $arrayDesv = array(); 

    //$objPHPexcel->removeSheetByIndex(0); /* SE ELIMINA LA PLANTILLA */ 
    //$objPHPexcel->setActiveSheetIndex(0); 


    $objWriter = PHPExcel_IOFactory::createWriter($objPHPexcel, 'Excel5'); 
    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); 
    header('Content-Disposition: attachment;filename="Reporte.xls"'); 
    header('Cache-Control: max-age=0'); 
    $objWriter->save('php://output'); 



} 

을 나는 나의 Excel 파일에있다. 이 코드 조각의 문제점은 문서의 일부 부분에서 "0"을 표시한다는 것입니다. 특히 세 번째 foreach를 제외하고 다른 foreach 반복의 값을 가진 셀 11에서는 모든 올바른 값을 갖습니다.

enter image description here

enter image description here 각각의 foreach 제가 그것이 아직 코드에 도달하지 않은 경우 상기 제의 foreach 번째의 foreach 값을 혼합하는 것이 이상한 찾을 수 있도록 시트의 일 개 형태를 채운다.

EDIT : Ive가 시퀀스를 다시 만들었고 코드가 첫 번째 "foreach"를 입력하고 처음 "if"절을 입력하고 인쇄 할 때 처음에는 문제가 발견 된 것 같습니다. 심지어 ($ 키)의 첫 번째 값 상점 값이 0 :

if (($key % 20) == 0) 
{ 
} 

답변

0

내가 찾던 조건이 값은 0

counter = 0; 
    if ($counter == 20) 
    { 
    } 
    //Do stuff 
    //Clear counter 
    $counter = 0; 
0

가 복제 된 각 $의 newsheet에 대한 새로운 변수 이름을 사용, 그것은 복제는 이전 복제에서 참조하여 일부 잔여 정보를 떠나는 것이 될 수있다 ~ $ newssheet.

+0

때 그것이 항상 입력 한 원인 나는 카운터에이 방법을 대체 한

if (($key % 20) == 0) { } 

아니었다 것으로 보인다 주사위가 없다. 나는 같은 결과를 가지고있다. 각각의 "foreach"에 대해 새로운 var로 시도하고 처음부터 (전역으로) 선언합니다. – Carlos