2015-03-08 3 views
1

В настоящее время у меня есть код ниже, который будет проходить через файл excel и возвращать строки с отсутствующими данными. выход, как показано ниже:Получить значение из определенной строки в столбце

- Row number: 37 
    - Missing : in cell B37 
    - Missing : in cell D37 

Что я хотел бы вернуться в следующий

- Row number: 37 
    - Missing nameFirst : in cell B37 
    - Missing nameLast : in cell D37 

Где nameFirst это значение ячейки B1 и nameLast является значение D1.

<?PHP 
require_once 'Excel/PHPExcel.php'; 
require_once 'Excel/PHPExcel/Reader/Excel2007.php'; 
class MyReadFilter implements PHPExcel_Reader_IReadFilter 
{ 
    public function readCell($column, $row, $worksheetName = '') { 
     $Retour=false; 
     $column=PHPExcel_Cell::columnIndexFromString($column);// Warning ! A=1, not zero as usual 
     if($row<1 || $column>4) 
      $Retour=false; 
     else 
      $Retour=true; 
     return $Retour; 
    } 
} 
echo '<pre>'; 
$objReader = PHPExcel_IOFactory::createReader('Excel2007'); 
$objReader->setReadDataOnly(true); 
$objReader->setReadFilter(new MyReadFilter()); 
$objPHPExcel = $objReader->load('test.xlsx'); 
$worksheet=$objPHPExcel->getSheet(0); 
foreach ($worksheet->getRowIterator() as $row) { 
     if($row->getRowIndex()>1){ 
      echo ' - Row number: ' . $row->getRowIndex() . "\r\n"; 

      $cellIterator = $row->getCellIterator(); 
      $cellIterator->setIterateOnlyExistingCells(false); // Loop all cells, even if it is not set 
      foreach ($cellIterator as $cell) { 
       $colIndex = PHPExcel_Cell::columnIndexFromString($cell->getColumn()); 



       if($cell->getCalculatedValue() == "") 
       echo '  - Missing <THIS IS WHERE I WANT THE INDEX CELL FOR THE COLUMN> :' . 'in cell ' . $cell->getCoordinate() . "\r\n"; 

     } 
     } 
    } 
echo '</pre>'; 

?> 

Я попытался изменить эхо включить переменный $ colIndex в дополнении к:

  echo '  - Missing '. $worksheet->getCellByColumnAndRow($colIndex, 1)->getValue(). '. :' . $cell->getCoordinate() . "\r\n"; 

Но это вызывает возвращение одной строки, и только один правильных ячеек и целой кучи пустых переменных

- Row number: 2 
    - Missing nameFirst. :B1 
    - Missing . :E1 
    - Missing . :F1 
    - Missing . :G1 
    - Missing . :H1 

ответ

2

Так что вам нужно, чтобы получить значение ячейки для строки 1 в текущей ячейке ($ ячейке) столбец

echo '  - Missing ' . 
    $worksheet->getCell($cell->getColumn(). '1')->getValue() . 
    ' :' . 'in cell ' . 
    $cell->getCoordinate() . "\r\n"; 

должен отлично работать

+0

Спасибо, что сработало отлично. – user925738

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