自动查找列字母

Find the columns letter automatic

有没有办法获取第一 (1) 行包含文本 Area of Relevance 的列字母,并像我在 $sheet->rangeToArray('D' ... 中那样使用它。我需要这个的原因是因为我刚刚发现它并不总是与列字母 D.

相同的列 "Area of Relevance"
$countSheets = $objPHPExcel->getSheetCount();

for ($i=0; $i < $countSheets; $i++) { 
  $sheet = $objPHPExcel->setActiveSheetIndex($i); 
  $highestRow = $sheet->getHighestRow(); 
  $highestColumn = $sheet->getHighestColumn();
  for ($row = 0; $row <= $highestRow; $row++){ 
    //  Read a row of data into an array Column: A = "ID" and Column: D = "Area of Relevance"
    $rowDataA = $sheet->rangeToArray('A' . $row,
                                            NULL,
                                            TRUE,
                                            FALSE);

    $rowDataD = $sheet->rangeToArray('D' . $row,
    NULL,
    TRUE,
    FALSE);    

    if (strpos($rowDataD[0][0], 'HEADING') === false && strpos($rowDataD[0][0], 'SW') !== false && is_numeric($rowDataA[0][0])) {//her må der ikke indgå HW/SW/MECHANICS
      $IDarray[] =  $rowDataA[0][0]; 
    }                                 
  }
}     

解决了我的问题,现在有效了。

$countSheets = $objPHPExcel->getSheetCount();

for ($i=0; $i < $countSheets; $i++) { 
  $sheet = $objPHPExcel->setActiveSheetIndex($i); 

  $row = $objPHPExcel->getActiveSheet($sheet)->getRowIterator(1)->current();

  $cellIterator = $row->getCellIterator();
  $cellIterator->setIterateOnlyExistingCells(false);

  foreach ($cellIterator as $cell) {
    if ($cell->getValue() == "Area of Relevance") {                      
      $colIndex = PHPExcel_Cell::columnIndexFromString($cell->getColumn());
      $colString = PHPExcel_Cell::stringFromColumnIndex($colIndex-1, false);
      $letter = $colString;
    }
  }
  if (!empty($letter)) {           
    $highestRow = $sheet->getHighestRow(); 
    for ($row = 0; $row <= $highestRow; $row++){ 
      //  Read a row of data into an array Column: A = "ID" and Column: D = "Area of Relevance"
      $rowDataA = $sheet->rangeToArray('A' . $row,
                                              NULL,
                                              TRUE,
                                              FALSE);

      $rowDataD = $sheet->rangeToArray($letter . $row,
      NULL,
      TRUE,
      FALSE);    

      if (strpos($rowDataD[0][0], 'HEADING') === false && strpos($rowDataD[0][0], 'SW') !== false && is_numeric($rowDataA[0][0])) {//her må der ikke indgå HW/SW/MECHANICS
        $IDarray[] =  $rowDataA[0][0]; 
      }                                 
    }
  }
}