Estoy tratando de leer un archivo XLSX usando el módulo de nodo de sheetjs con una columna que tiene fechas. Después de analizar obtuve datos en formato incorrecto
Los datos del archivo son: 17/02/2020
Pero después de leer xlsx, me da 17/2/20. Está cambiando el formato del año. Mi requisito es obtener los datos tal como están.
Código de muestra:
var workbook = XLSX.readFile('a.xlsx', { sheetRows: 10 }); var data = XLSX.utils.sheet_to_json(workbook.Sheets['Sheet1'], { header: 1, defval: '', blankrows: true, raw: false });Aquí se presenta una solución que usa flujos, pero puede funcionar igualmente con readFile . El problema que estaba en juego en el problema es que el valor de la opción dateNF en sheet_to_json necesita algunos caracteres de escape.
P.ej:
const XLSX = require('xlsx'); const filename = './Book4.xlsx'; const readOpts = { // <--- need these settings in readFile options cellText:false, cellDates:true }; const jsonOpts = { header: 1, defval: '', blankrows: true, raw: false, dateNF: 'd"/"m"/"yyyy' // <--- need dateNF in sheet_to_json options (note the escape chars) } const workbook = XLSX.readFile(filename, readOpts); const worksheet = workbook.Sheets['Sheet1']; const json = XLSX.utils.sheet_to_json(worksheet, jsonOpts); console.log(json);Para esta entrada:
Saldrá:
[ [ 'v1', 'v2', 'today', 'formatted' ], [ '1', 'a', '14/8/2021', '14/8/2021' ] ] Sin la dateNF: 'd"/"m","/yyyy' , obtiene el mismo problema que describe en la pregunta:
[ [ 'v1', 'v2', 'today', 'formatted' ], [ '1', 'a', '8/14/21', '8/14/21' ] ]Los dos posibles efectos secundarios no deseados son:
cellText y cellDates en readFileyyyy^mmm^dd en la entrada: la configuración dateNF anula cualquier configuración personalizada