Header matching in searchDataInExcel() was case-insensitive but not whitespace-tolerant, so a header like " SOME_CHAR" (an easy defect to pick up via copy-paste from another spreadsheet/system) was reported as a missing column and aborted the whole upload. - trim() the cell value before matching, alongside the existing toLowerCase() normalization - add spreadsheet-util.spec.ts (no prior spec file existed) covering the trimmed match and a regression guard that a genuinely different header is still correctly reported missing - add a Cypress case + fixture in excel.cy.ts covering the same defect end to end