2014-02-23 34 views
0

任何人都可以幫助我如何限制循環如果變量$name是空的,即使其他人不在該數組中,它也不會顯示在Excel生成的報告中。如何限制phpexcel中的循環

我想要做的是如果在該循環中的特定數組變量$name是空的,即使其他變量不是他們不會包括在生成的Excel報告....任何人都可以知道如何做到這一點?請幫幫我。

當前代碼:

<?php 
if(isset($_POST['send'])){ 
    include('connection.php'); 
    require_once 'Classes\PHPExcel\IOFactory.php'; 
    $filename = 'qualification_standards.xlsx'; 
    $repcode = $_POST['repcode']; 
    $position = $_POST['t_position']; 
    $town = $_POST['t_town']; 
    $title = 'Qualification-Standards'.'_'.$repcode.'_'.$position.'_'.$town; 

    $objReader = PHPExcel_IOFactory::createReader('Excel2007'); 
    $objReader->setReadDataOnly(true); 

    $objPHPExcel = $objReader->load($filename); 
    $objWorksheet = $objPHPExcel->getActiveSheet(); 
    $objWorksheet = $objPHPExcel->setActiveSheetIndex(0); 


    $result = array(); 
     for ($n = 1; $n <=15; $n++) 
      { 
     $no = 0+$n; 
     $aic = isset($_POST['aic'.$n]) ? $_POST['aic'.$n] : ""; 
     $repcode = isset($_POST['repcode']) ? $_POST['repcode'] : ""; 
     $name = isset($_POST['name'.$n]) ? $_POST['name'.$n] : ""; 
     $optA = isset($_POST['optA'.$n]) ? $_POST['optA'.$n] : ""; 
     $optB = isset($_POST['optB'.$n]) ? $_POST['optB'.$n] : ""; 
     $optC = isset($_POST['optC'.$n]) ? $_POST['optC'.$n] : ""; 
     $optD = isset($_POST['optD'.$n]) ? $_POST['optD'.$n] : ""; 
     $total = isset($_POST['total'.$n]) ? $_POST['total'.$n] : ""; 

     $result[] = array(
       $no, 
       "PRO13325-".$aic, 
       $repcode, 
       $name, 
       $optA, 
       $optB, 
       $optC, 
       $optD, 
       $total 
      ); 
     } 


      $headings = array(array('QUALIFICATION STANDARDS'),array(
      NULL, 
      NULL, 
      NULL, 
      NULL, 
      NULL, 
      NULL, 
      NULL, 
      NULL, 
      NULL), array(
      'No.', 
      'AIC', 
      'RepCode', 
      'Name of Candidates', 
      'Educational Attainment', 
      'Experience', 
      'In-Service Trainings & Seminars Attended', 
      'Eligibility', 
      'Total' 
     ) 
     ); 
     $fone = "___________________________"; 
     $ftwo = "Signature of Rater"; 
     $footer = array(array($fone),array($ftwo)); 

     $points = array(
      ' ', 
      ' ', 
      ' ', 
      ' ', 
      '(20 pts)', 
      '(20 pts)', 
      '(20 pts)', 
      '(20 pts)', 
      '(80 pts)' 
     ); 

     $styleArray = array(
     'borders' => array(
     'allborders' => array(
     'style' => PHPExcel_Style_Border::BORDER_THIN 
      ) 
     ) 
     ); 

     $objPHPExcel->getActiveSheet()->getStyle('A3:I19')->applyFromArray($styleArray); 
     unset($styleArray); 

     $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setAutoSize(true); 
     $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true); 
     $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setAutoSize(true); 
     $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setAutoSize(true); 
     $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setAutoSize(true); 
     $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setAutoSize(true); 
     $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setAutoSize(true); 
     $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setAutoSize(true); 
     $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setAutoSize(true); 

     $objPHPExcel->getActiveSheet() 
      ->getStyle('A1:I21') 
      ->getAlignment() 
      ->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); 
     $objPHPExcel->getActiveSheet() 
      ->getStyle('D5:D19') 
      ->getAlignment() 
      ->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT); 

     $objPHPExcel->getActiveSheet()->getStyle('A1:I1')->getFont()->setSize(22); 
     $objPHPExcel->getActiveSheet()->mergeCells('A1:I2'); 
     $objPHPExcel->getActiveSheet()->getStyle('A20:I20')->getFont()->setSize(17); 
     $objPHPExcel->getActiveSheet()->getStyle('A21:I21')->getFont()->setSize(13); 
     $objPHPExcel->getActiveSheet()->mergeCells('A20:I20'); 
     $objPHPExcel->getActiveSheet()->mergeCells('A21:I21'); 
     $objPHPExcel->getActiveSheet()->getStyle('B5:B19')->getNumberFormat()->setFormatCode('0000'); 
     $objPHPExcel->getActiveSheet()->getStyle('A3:I3')->applyFromArray(
      array(
       'font' => array(
        'bold' => true 
       ), 
       'alignment' => array(
        'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER, 
       ), 
       'borders' => array(
        'top' => array(
         'style' => PHPExcel_Style_Border::BORDER_THIN 
        ) 
       ), 
       'fill' => array(
        'type' => PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR, 
        'rotation' => 90, 
        'startcolor' => array(
         'argb' => 'FFA0A0A0' 
        ), 
        'endcolor' => array(
         'argb' => 'FFFFFFFF' 
        ) 
       ) 
      ) 
    ); 
     $objPHPExcel->getActiveSheet()->fromArray($headings, null, 'A1'); 
     $objPHPExcel->getActiveSheet()->fromArray($footer, null, 'A20'); 
     $objPHPExcel->getActiveSheet()->fromArray($points, null, 'A4'); 
     $row = 5; 
     foreach($result as $rows){ 
     if (!empty($rows[4])) { 
      $objPHPExcel->getActiveSheet()->fromArray($rows, null, 'A' . $row); 
      $row++; 
     } 
    } 


    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); 
    header(sprintf('Content-Disposition: attachment;filename="%s.xlsx"',preg_replace('/\\r\\n?|\\n/', '', $title))); 
    header('Cache-Control: max-age=0'); 

    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); 
    $objWriter->save('php://output'); 
    exit; 
}?> 

回答

0
for ($n = 1; $n <=15; $n++){ 

    $name = isset($_POST['name'.$n]) ? $_POST['name'.$n] : ""; 
    if(!$name) 
    { 
     continue; 
    } 

    $no = 0+$n; 
    $aic = isset($_POST['aic'.$n]) ? $_POST['aic'.$n] : ""; 
    $repcode = isset($_POST['repcode']) ? $_POST['repcode'] : ""; 
    // $name = isset($_POST['name'.$n]) ? $_POST['name'.$n] : ""; 
    $optA = isset($_POST['optA'.$n]) ? $_POST['optA'.$n] : ""; 
    $optB = isset($_POST['optB'.$n]) ? $_POST['optB'.$n] : ""; 
    $optC = isset($_POST['optC'.$n]) ? $_POST['optC'.$n] : ""; 
    $optD = isset($_POST['optD'.$n]) ? $_POST['optD'.$n] : ""; 
    $total = isset($_POST['total'.$n]) ? $_POST['total'.$n] : ""; 

    $result[] = array(
     $no, 
     "PRO13325-".$aic, 
     $repcode, 
     $name, 
     $optA, 
     $optB, 
     $optC, 
     $optD, 
     $total 
    ); 
} 
+1

謝謝老兄,它的工作:d – user3340637