2017-09-30 50 views
0

我想通過使用PHPExcel的第一個單元格值來查找Excel表格中行的最後單元格值。用戶輸入行中第一個單元格的值(這是「command」參數),如果它存在於表格中,我的函數應該跳轉到行的最後一個單元格並返回值。這是我的代碼:在Excel中搜索PHP與PHP

public function search($command, $excelobj) { 
    foreach ($excelobj->getWorksheetIterator() as $worksheet) { 
     foreach ($worksheet->getRowIterator() as $row) { 
      $rowiterator = $worksheet->getRowIterator(); 
      foreach ($row->getCellIterator() as $cell) { 
       $celliterator = $row->getCellIterator(); 
       $head = $celliterator->current()->getValue(); 
       if(strcmp($head, $command)) { 
        for ($i = 0; $i == 8; $i++) { 
         $celliterator->next(); 
        } 
        return $cell->getValue(); 
       } 
      } 
     } 
    } 
    return false; 
} 

由於某些原因它總是返回錯誤。

+0

快速注:此功能是因爲它簡單地返回找到的值或者什麼都沒有一個非常糟糕的代碼設計實例。你應該返回'false'或'null'或拋出異常。 –

回答

0

我解決它自己,這個代碼正常工作:

public function search($command, $excelobj) { 
    foreach ($excelobj->getWorksheetIterator() as $worksheet) { 
     foreach ($worksheet->getRowIterator() as $row) { 
      $rowiterator = $worksheet->getRowIterator(); 
      $celliterator = $row->getCellIterator(); 
      $celliterator->setIterateOnlyExistingCells(true); 
      $head = $celliterator->current()->getValue(); 
      while (strcmp($head, $command) !== 0 && $rowiterator->valid()) { 
       $rowiterator->next(); 
       $row = new PHPExcel_Worksheet_Row($worksheet, $rowiterator->key()); 
       $celliterator = $row->getCellIterator(); 
       $head = $celliterator->current()->getValue(); 
      } 
      for ($i = 0; $i <= 7; $i++) { 
       $celliterator->next(); 
      } 
      return $celliterator->current()->getValue(); 
     } 
    } 
    return false; 
}