2014-08-21 2 views
0

У меня есть foreach в foreach, чтобы получить данные родителей в столбце. Он хорошо работает в PHP, но не в PHP первенствует Посмотреть скриншоты: Это то, что я хочу, чтобы получитьphpexcel - looping работает неправильно

enter image description here

Но он заполняет только ДАННЫЕ из второго цикла:

enter image description here

Вот мой код:

$row=7; 
    $column = 'A'; 

    $refcodegests = RefGest::find_by_sql('SELECT DISTINCT c.code, p.lib ..."'); 
    foreach ($refcodegests as $refcodegest) { 

     $Code = $refcodegest->code; 
     $Lib = $refcodegest->lib; 

      $objPHPExcel->setActiveSheetIndex(0)->setCellValue($column . $row, $Code . ' -' . $Lib); 
      $objPHPExcel->getActiveSheet()->getStyle($column . $row)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID); 
      $objPHPExcel->getActiveSheet()->getStyle($column . $row)->getFill()->getStartColor()->setRGB('3F6E89'); 
      $objPHPExcel->getActiveSheet()->getStyle($column . $row)->getFont()->getColor()->setRGB('FFFFFF'); 

      $refcodeacts = RefGest::find_by_sql('SELECT DISTINCT c.code_action, a.lib_action... 
               FROM cap_val_charges c,com_ref_action a 
                WHERE c.code_gestion="'.$CodeGestion.'" ...'); 

       foreach ($refcodeacts as $refcodeact) {     
        $CodeAction = $refcodeact->code_action; 
        $LibAction = $refcodeact->lib_action; 
            $objPHPExcel->setActiveSheetIndex(0)->setCellValue($column . $row, $CodeAction . ' -' . $LibAction); 
            $objPHPExcel->getActiveSheet()->getStyle($column . $row)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID); 
            $objPHPExcel->getActiveSheet()->getStyle($column . $row)->getFill()->getStartColor()->setRGB('DFDFDF'); 
            $objPHPExcel->getActiveSheet()->getStyle($column . $row)->getFont()->getColor()->setRGB('233748'); 
            $row++; 
      } 
      $row++; 
     } 

Любой идея что изменится?

Заранее спасибо

ответ

0

Я думаю, вам нужно переместить ваш второй $row++выше ваш второй foreach() цикл:

$row=7; 
$column = 'A'; 

$refcodegests = RefGest::find_by_sql('SELECT DISTINCT c.code, p.lib ..."'); 
foreach ($refcodegests as $refcodegest) { 

    $Code = $refcodegest->code; 
    $Lib = $refcodegest->lib; 

    $objPHPExcel->setActiveSheetIndex(0)->setCellValue($column . $row, $Code . ' -' . $Lib); 
    $objPHPExcel->getActiveSheet()->getStyle($column . $row)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID); 
    $objPHPExcel->getActiveSheet()->getStyle($column . $row)->getFill()->getStartColor()->setRGB('3F6E89'); 
    $objPHPExcel->getActiveSheet()->getStyle($column . $row)->getFont()->getColor()->setRGB('FFFFFF'); 

    $row++; 

    $refcodeacts = RefGest::find_by_sql('SELECT DISTINCT c.code_action, a.lib_action... 
              FROM cap_val_charges c,com_ref_action a 
              WHERE c.code_gestion="'.$CodeGestion.'" ...'); 

    foreach ($refcodeacts as $refcodeact) {     
     $CodeAction = $refcodeact->code_action; 
     $LibAction = $refcodeact->lib_action; 

     $objPHPExcel->setActiveSheetIndex(0)->setCellValue($column . $row, $CodeAction . ' -' . $LibAction); 
     $objPHPExcel->getActiveSheet()->getStyle($column . $row)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID); 
     $objPHPExcel->getActiveSheet()->getStyle($column . $row)->getFill()->getStartColor()->setRGB('DFDFDF'); 
     $objPHPExcel->getActiveSheet()->getStyle($column . $row)->getFont()->getColor()->setRGB('233748'); 
     $row++; 
    } 
} 

В противном случае ваш первый $refcodeact является перезапись $refcodegest, что вы только что set

+0

Привет, Марк, вы правы. Большое спасибо! – achillix

Смежные вопросы