XLSX, Convirtiendo un archivo Excel a JSON con Node JS

Te doy la bienvenida a un nuevo post donde aprenderás a convertir un archivo Excel a JSON utilizando Node JS, este artículo será cortito pero estoy seguro que te será de gran utilidad, ya que muchos suscriptores en YouTube me pidieron que explicará como hice el JSON de datos en mi curso de PHP, espero te guste y ya sabes, por favor comparte en tus redes para darme apoyo y continuar creando contenido.

XLSX, Convirtiendo un archivo Excel a JSON con Node JS

by Juan Carlos García

24-Ag-2022

(3)


InicionodejsExcel a JSON con Node JS

¿Cómo convertir un archivo Excel a JSON con Node JS?

Existe una forma muy fácil para realizar esta tarea, por ejemplo, podemos utilizar el paquete XLSX el cual no solo nos permite obtener un JSON si no que tiene más formatos de salida, pero que en esta ocasión nos vamos a centrar en el formato JSON.

 

Instalando XLSX

Bien lo primero que tienes que hacer es crear un nuevo proyecto en Node JS a través del comando:

 

npm init

 

Te pedirá que ingreses algunos dato pero al final debes ver algo así:

 

Creación del package json, inicalización del proyecto

 

Instalando XLSX en nuestro proyecto

Ahora que ya has inicializado tu proyecto debes instalar el paquete XLSX con el siguiente comando.

 

npm install xlsx

 

Archivo ejemplo de Excel

Bien, si ya tienes un archivo Excel lo puedes usar o puedes crear un archivo como lo hice yo, el cual tiene una sola hoja y tres columnas ID, Nombre, Fecha, y puesto, agregue el campo fecha apropósito, ya que para recuperar la fecha correctamente, tenemos que aplicar un factor que veremos a continuación.

 

Ejemplo de un archivo de Excel para convertir a JSON

 

¿Cómo leer un Excel desde Node.js?

Utilizando XLSX es muy sencillo, te dejo el código y después lo explicamos un poco.

 

var XLSX = require("xlsx");

const ExcelAJSON = () => {
  const excel = XLSX.readFile(
    "C:\\Users\\ewebik\\Desktop\\excel-a-json\\datos.xlsx"
  );
  var nombreHoja = excel.SheetNames; // regresa un array
  let datos = XLSX.utils.sheet_to_json(excel.Sheets[nombreHoja[0]]);

  const jDatos = [];
  for (let i = 0; i < datos.length; i++) {
    const dato = datos[i];
    jDatos.push({
      ...dato,
      Fecha: new Date((dato.Fecha - (25567 + 2)) * 86400 * 1000)
    });
  }
  console.log(jDatos);
};
ExcelAJSON();

Creo que el código es muy sencillo de comprender, no obstante veamos que hace:

  • Iniciamos requiriendo el paquete XLSX.
  • Creamos la función ExcelAJSON que será la encargada de contener la lógica para leer el archivo Excel.
  • Dentro de la función ExcelAJSON, lo primero que hacemos es utilizar el método XLSX.readFile, que recibe la ruta completa donde se encuentra tu archivo que deseas leer y la almacenamos en la variable excel.
  • Bien, para recuperar las hojas de nuestro archivo lo hacemos a través de excel.SheetNames, el cual es un array con la cantidad de hojas que existan en el archivo, en este caso solo es una, por lo tanto, los datos estarán en el indice cero.
  • Ahora para recuperar los datos utilizamos, XLSX.utils.sheet_to_json, el cual recibe la hoja del archivo que contiene los datos que queremos leer, en este caso la hoja cero.

Y listo en la variable datos tenemos un JSON con los datos de nuestra hoja de Excel, pero aquí hay un problema, cuando transformamos a JSON los datos llegan como si en Excel los transformáramos a texto, por lo tanto, debemos hacer una conversión para recuperar la fecha correcta, en este caso la corrección es 

new Date((dato.Fecha - (25567 + 2)) * 86400 * 1000)

Este factor permite recuperar la fecha correctamente y una vez que ya tienes tu JSON lo puedes utilizar en otra sección de tu código según el tipo de aplicación que estas desarrollando.

Espero que te haya gustado este pequeño post pero sobre todo te haya sido de gran utilidad, por favor ayúdame compartiendo en tus redes para que llegue a más gente que quizá lo necesite.

 

Juan Carlos

Juan Carlos García

Desarrollador de software / SEO

Durante años he desarrollado plataformas dedicadas al rastreo satelital y varios sitios web que se encuentran en la primera página de Google, y hoy quiero compartir contigo lo que se en tecnologías como: Node JS, PHP, C# y Bases de datos.

Si quieres apoyarme sígueme en mis redes sociales y suscríbete a mi canal de YouTube.

EWebik

Diseño de páginas web y aplicaciones moviles.

© 2024 EWebik