有没有办法获得第一(1)行包含文本Area of Relevance的列字母,并像我在$sheet->rangeToArray('D' ...中那样使用它。我之所以需要它,是因为我刚刚发现,列字母D并不总是同一列"Area of reason“。
$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];
}
}
} 发布于 2020-06-15 02:55:56
解决了我的问题,现在它起作用了。
$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];
}
}
}
}https://stackoverflow.com/questions/62376274
复制相似问题