2015-03-08 69 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 2015-03-08 18:11:14