Mantenha o escopo estreito
Este fluxo atende analistas, equipes de operações e desenvolvedores que preparam uma única pasta de trabalho ou planilha para um consumidor JSON. Preserve uma cópia intacta e produza um array JSON revisado ou uma prévia de intervalo delimitado. Ingestão em lote, entrada por API ou S3, união de várias pastas e entrega em SQL, Parquet ou warehouse não fazem parte deste caminho.
Inspecione o limite antes de limpar
Anote o nome da planilha, o intervalo A1 ou nomeado, a linha de cabeçalho e a quantidade esperada de linhas. Use xlsx-range-extractor em modo records quando cada linha deve virar um objeto, ou cell_objects quando endereços e coordenadas forem evidências. Só remova vazios se eles não tiverem significado para a revisão. O limite é importante: o mapeador e o transformador leem a planilha, não um intervalo arbitrário.
Mapeie campos com um contrato explícito
Em uma cópia de trabalho, use xlsx-column-mapper com a linha de cabeçalho real. Coloque nomes canônicos em renameMapJson, aliases em aliasMapJson, a sequência desejada em reorderColumns e remoções intencionais em removeColumns. Decida keepUnmapped antes de executar. Confira a nova linha de cabeçalho e mantenha o original; a saída do mapeamento é um novo XLSX.
Converta e revise o comportamento do JSON
Use xlsx-json-transformer no modo xlsx_to_json quando a planilha mapeada tiver os cabeçalhos na primeira linha. Mantenha estáveis o nome da planilha e o separador de caminhos. restoreTypes pode converter textos parecidos com número, booleano, null, array ou objeto em outros valores JSON, enquanto células vazias são omitidas no modo XLSX para JSON. Compare linhas representativas, campos, tipos, vazios e chaves duplicadas. As ferramentas não decidem as regras de duplicata nem os tipos de negócio.
Aceite somente um resultado com todas as diferenças explicadas e sem introduzir requisitos de lotes, entradas externas, várias pastas, SQL, Parquet ou warehouse nesta entrega de uma única pasta.