2015-09-28 118 views
0

我想只讀取所有行的列1,3,6和7。我試過這樣但它不起作用。獲取Excel工作表的特定行

 $objPHPExcel = PHPExcel_IOFactory::load($file); 

     $sheet = $objPHPExcel->getSheetByName('Prefixes'); 
     $i =2; 
     foreach($sheet->getRowIterator() as $row){ 

      $dest = $sheet->getCellByColumnAndRow(1, $i)->getValue(); 
      $code = $sheet->getCellByColumnAndRow(3, $i)->getValue(); 

      $price = trim($sheet->getCellByColumnAndRow(6,$i)->getCalculatedValue()); 
      $date = date('Y-m-d',PHPExcel_Shared_Date::ExcelToPHP($sheet->getCellByColumnAndRow(7,$i)->getCalculatedValue())); 

      $rateSheet[] = array($dest,$code,$price,$date);   
      $i++; 

     } 
+2

你能解釋一下你的「不工作」是什麼意思?它是否顯示任何錯誤消息?它會返回錯誤的數據嗎?它是否會將您的服務器着火?爲什麼你使用rowIterator,然後直接尋址單個單元格? –

+0

計數可能從0開始,記住 – CDrosos

+0

它就像一個無限循環,我的屋頂着火了:P。迭代每行並獲取每行的值是不正確的?那我該怎麼做呢? –

回答

0

如果它可能會幫助別人,這是正確的做法:

$rateSheet=array(); 
    $objPHPExcel = PHPExcel_IOFactory::load($file); 
    if($file=="519340.xls"){ 
     echo "</br>OK</br>"; 
     $sheet = $objPHPExcel->getSheetByName('Prefixes'); 
     $i =2; 
     $highestRow=$objPHPExcel->setActiveSheetIndex(1)->getHighestRow(); 
     echo $highestRow; 
     for($j=0;$j<$highestRow;$j++){ 
      $dest = $sheet->getCellByColumnAndRow(0, $i)->getValue(); 
      $code = $sheet->getCellByColumnAndRow(2, $i)->getValue();   
      $price = trim($sheet->getCellByColumnAndRow(5,$i)->getCalculatedValue()); 
      $date = date('Y-m-d',PHPExcel_Shared_Date::ExcelToPHP($sheet->getCellByColumnAndRow(6,$i)->getCalculatedValue()));   
      $rateSheet[] = array($dest,$code,$price,$date);    
      $i++;    
     } 
     return $rateSheet;