首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找letter automatic列

查找letter automatic列
EN

Stack Overflow用户
提问于 2020-06-15 01:57:51
回答 1查看 23关注 0票数 0

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

代码语言:javascript
复制
$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]; 
    }                                 
  }
}     
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-15 02:55:56

解决了我的问题,现在它起作用了。

代码语言:javascript
复制
$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]; 
      }                                 
    }
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62376274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档