Descrizione
Parser enterprise per file Microsoft Excel formato .xlsx (Office Open XML SpreadsheetML, lo standard Excel 2007+ universalmente usato nei workflow business italiani: commercialisti, controlling, sales reporting, magazzino, ordini, fatturazione, riconciliazione bancaria, anagrafica clienti/fornitori). Trasforma il binario Excel in un dataset processabile come array di oggetti JavaScript pronto per loop, filter, sync, ingest in DB o pipeline downstream. La prima riga del foglio è interpretata di default come header (intestazioni colonne) e le righe successive diventano oggetti dove ogni cella corrisponde al valore del campo identificato dall'header — pattern naturale per non-developer che esportano CRM/ERP/gestionali in Excel e vogliono manipolare i dati programmaticamente. Input duale per coprire i pattern di provenienza file Excel reali in workflow business: input da disco (path nel sandbox del tenant, es. file uploadato via SFTP, scritto da action_file_write upstream, droppato da trigger_file_watch nella cartella shared) oppure input da base64 (la rappresentazione string-encoded del binario, formato canonico per attachment di trigger_imap email, body di webhook multipart upload via trigger_form, payload API con file embedded). Auto-detect del formato di input. Multi-foglio support: il workbook Excel può contenere N fogli (sheet) — il nodo permette di selezionare uno specifico per nome ("Ordini", "Listino", "Fatture") o per indice (0-based), oppure di iterare tutti i fogli ed emettere array consolidato (utile per Excel con multi-mese in fogli separati "2026-01", "2026-02", ecc.). HeaderRow configurabile: per file Excel "professionali" con titolo + logo aziendale + metadata nelle prime righe (pattern comune nei file da gestionali italiani come Sage, Zucchetti, TeamSystem), la riga di header è alla riga 5 o 7, non alla riga 1 — il parametro headerRow (default 1, 1-based) skippa le righe iniziali decorative. Type preservation: numeri restano numeric (non stringificati con perdita di precisione), date Excel serial number convertite in Date object JavaScript (con timezone corretta), booleani come true/false, celle vuote come null (consistenza per filter downstream). Cap di sicurezza: max 1M rows per evitare OOM su file enormi (l'Excel format supporta 1M+ righe ma lavorarci in JavaScript pratico < 100k), warning se headerRow > 100 (probabile sbaglio di config). Output: { rows (array di oggetti, un campo per header), sheetName, totalRows, columns, columnCount, headerRow, emptyCellsCount, truncated }. Use case: ingest ordini da allegato Excel di una email IMAP cliente B2B (cliente legacy che ancora manda ordini via Excel anziché EDI) → parse → loop su rows → action_odoo_create_lead per ogni riga; import lead da export CRM xlsx caricato dall'utente via trigger_form upload → loop → upsert HubSpot; parse listino prezzi fornitore aggiornato periodicamente (trigger_file_watch + action_xlsx_parse + sync DB pricing); batch update di anagrafica clienti da spreadsheet di riconciliazione contabile mensile del commercialista; processing di export Salesforce SOQL salvato come Excel per dashboard custom; estrazione di righe specifiche da modulo F24 in formato Excel per tracking pagamenti tributi.
