fix autodetect
This commit is contained in:
parent
aa1c32b7ed
commit
0bc2ff7e9d
@ -86,25 +86,31 @@ try {
|
|||||||
|
|
||||||
for ($scanRow = 1; $scanRow <= $scanLimit; $scanRow++) {
|
for ($scanRow = 1; $scanRow <= $scanLimit; $scanRow++) {
|
||||||
$score = 0;
|
$score = 0;
|
||||||
$firstMatchCol = $highestColumnIndex + 1;
|
|
||||||
for ($col = 1; $col <= $highestColumnIndex; $col++) {
|
for ($col = 1; $col <= $highestColumnIndex; $col++) {
|
||||||
$colLetter = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::stringFromColumnIndex($col);
|
$colLetter = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::stringFromColumnIndex($col);
|
||||||
$cellVal = $worksheet->getCell($colLetter . $scanRow)->getCalculatedValue();
|
$cellVal = $worksheet->getCell($colLetter . $scanRow)->getCalculatedValue();
|
||||||
$cellVal = mb_strtolower(trim((string)$cellVal));
|
$cellVal = mb_strtolower(trim((string)$cellVal));
|
||||||
if ($cellVal !== '' && in_array($cellVal, $templateLabels, true)) {
|
if ($cellVal !== '' && in_array($cellVal, $templateLabels, true)) {
|
||||||
$score++;
|
$score++;
|
||||||
if ($col < $firstMatchCol) $firstMatchCol = $col;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($score > $bestScore) {
|
if ($score > $bestScore) {
|
||||||
$bestScore = $score;
|
$bestScore = $score;
|
||||||
$bestRow = $scanRow;
|
$bestRow = $scanRow;
|
||||||
$bestCol = $firstMatchCol;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$header_row = $bestRow;
|
$header_row = $bestRow;
|
||||||
$start_column = $bestCol;
|
|
||||||
|
// Determine start_column: first non-empty cell in the detected header row
|
||||||
|
for ($col = 1; $col <= $highestColumnIndex; $col++) {
|
||||||
|
$colLetter = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::stringFromColumnIndex($col);
|
||||||
|
$cellVal = $worksheet->getCell($colLetter . $header_row)->getCalculatedValue();
|
||||||
|
if (trim((string)$cellVal) !== '') {
|
||||||
|
$start_column = $col;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
error_log("Auto-detected header row: $header_row, start column: $start_column (score: $bestScore/" . count($templateLabels) . ")");
|
error_log("Auto-detected header row: $header_row, start column: $start_column (score: $bestScore/" . count($templateLabels) . ")");
|
||||||
$response['auto_header_row'] = $header_row;
|
$response['auto_header_row'] = $header_row;
|
||||||
$response['auto_header_score'] = $bestScore;
|
$response['auto_header_score'] = $bestScore;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user