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