2017-09-30 28 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; 
}