From 439673326312d1742d5e4d1ee0f446bf7fb42ce4 Mon Sep 17 00:00:00 2001 From: Eduardo Lopes <155753879+eduardolopesx03@users.noreply.github.com> Date: Wed, 28 Jan 2026 10:37:51 -0300 Subject: [PATCH] Improve chips virgens table detection --- Controllers/LinesController.cs | 35 +++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/Controllers/LinesController.cs b/Controllers/LinesController.cs index b91c6b3..775ec6f 100644 --- a/Controllers/LinesController.cs +++ b/Controllers/LinesController.cs @@ -1360,6 +1360,10 @@ namespace line_gestao_api.Controllers for (int i = 0; i < headers.Count; i++) { var headerRow = headers[i]; + var lastCol = headerRow.LastCellUsed()?.Address.ColumnNumber + ?? ws.LastColumnUsed()?.ColumnNumber() + ?? headerRow.LastCellUsed()?.Address.ColumnNumber + ?? 1; var itemColumns = headerRow.CellsUsed() .Where(c => NormalizeHeader(c.GetString()) == "ITEM") .Select(c => c.Address.ColumnNumber) @@ -1375,12 +1379,11 @@ namespace line_gestao_api.Controllers var startCol = itemColumns[tableIndex]; var endCol = tableIndex + 1 < itemColumns.Count ? itemColumns[tableIndex + 1] - 1 - : headerRow.LastCellUsed()?.Address.ColumnNumber ?? startCol; + : lastCol; - var map = BuildHeaderMapRange(headerRow, startCol, endCol); - int colItem = GetCol(map, "ITEM"); - int colChip = GetColAny(map, "Nº DO CHIP", "N° DO CHIP", "NUMERO DO CHIP", "N DO CHIP", "NUM. DO CHIP", "CHIP"); - int colObs = GetColAny(map, "OBSERVAÇÕES", "OBSERVACOES", "OBSERVACAO", "OBS"); + int colItem = startCol; + int colChip = FindHeaderColumn(headerRow, startCol, endCol, "CHIP"); + int colObs = FindHeaderColumn(headerRow, startCol, endCol, "OBS"); if (colItem == 0 || colChip == 0 || colObs == 0) continue; for (int r = startRow; r <= endRow; r++) @@ -1670,6 +1673,28 @@ namespace line_gestao_api.Controllers return map; } + private static int FindHeaderColumn(IXLRow headerRow, int startCol, int endCol, params string[] headerKeys) + { + var normalizedKeys = headerKeys.Select(NormalizeHeader).Where(k => !string.IsNullOrWhiteSpace(k)).ToArray(); + if (normalizedKeys.Length == 0) return 0; + + for (int col = startCol; col <= endCol; col++) + { + var key = NormalizeHeader(headerRow.Cell(col).GetString()); + if (string.IsNullOrWhiteSpace(key)) continue; + + foreach (var wanted in normalizedKeys) + { + if (key == wanted || key.Contains(wanted)) + { + return col; + } + } + } + + return 0; + } + private static DateTime? ToUtc(DateTime? dt) { if (dt == null) return null;