¿Cómo leer y escribir archivos de Excel en Node.js?

Node.js es un entorno de tiempo de ejecución de JavaScript multiplataforma y de código abierto que también se puede usar para leer de un archivo y escribir en un archivo que puede estar en formato txt, ods, xlsx, docx, etc.

El siguiente ejemplo cubre cómo se lee un archivo de Excel (.xlsx) desde un archivo de Excel y luego se convierte en JSON y también para escribir en él. Se puede lograr usando un paquete llamado xlsx para lograr nuestro objetivo.

Instalación del módulo: puede instalar el módulo xlsx usando el siguiente comando:

npm install xlsx

Nota: Para el siguiente ejemplo, text.xlsx es un archivo de datos ficticio que se ha utilizado.

Nombre de archivo: prueba.xlsx 

Hoja 1:

Hoja 2:

Entonces, el archivo de Excel test.xlsx tiene 2 hojas, una con los detalles del estudiante y otra con los detalles del profesor.

Operación de lectura Nombre de archivo: read.js 

Javascript

// Requiring the module
const reader = require('xlsx')
  
// Reading our test file
const file = reader.readFile('./test.xlsx')
  
let data = []
  
const sheets = file.SheetNames
  
for(let i = 0; i < sheets.length; i++)
{
   const temp = reader.utils.sheet_to_json(
        file.Sheets[file.SheetNames[i]])
   temp.forEach((res) => {
      data.push(res)
   })
}
  
// Printing data
console.log(data)

Explicación: Primero, el módulo npm se incluye en el archivo read.js y luego el archivo de Excel se lee en un libro de trabajo, es decir, un archivo constante en el programa anterior.

La cantidad de archivos en ese archivo de Excel en particular está disponible en la propiedad SheetNames del libro de trabajo. Se puede acceder de la siguiente manera:

const sheets = file.SheetNames  // Here the value of the sheets will be 2

Se ejecuta un bucle for hasta el final del archivo de Excel a partir de la primera página. Una de las funciones más importantes utilizadas en el código anterior es la función sheet_to_json() presente en el módulo utils del paquete xlsx. Acepta un objeto de hoja de trabajo como parámetro y devuelve una array de objetos JSON.

Hay un ciclo forEach que itera a través de cada objeto JSON presente en la array temporal y lo inserta en una variable de datos que contendría todos los datos en formato JSON.

Finalmente, los datos se imprimen o se puede realizar cualquier otra modificación en la array de objetos JSON.

Paso para ejecutar la aplicación:

Ejecute el archivo read.js con el siguiente comando:

node read.js

Producción:

Operación de escritura En el siguiente ejemplo, convertiremos una array de objetos JSON en una hoja de Excel y la agregaremos al archivo.

Nombre de archivo: escribir.js

Javascript

// Requiring module
const reader = require('xlsx')
  
// Reading our test file
const file = reader.readFile('./test.xlsx')
  
// Sample data set
let student_data = [{
    Student:'Nikhil',
    Age:22,
    Branch:'ISE',
    Marks: 70
},
{
    Student:'Amitha',
    Age:21,
    Branch:'EC',
    Marks:80
}]
  
const ws = reader.utils.json_to_sheet(student_data)
  
reader.utils.book_append_sheet(file,ws,"Sheet3")
  
// Writing to our file
reader.writeFile(file,'./test.xlsx')

Explicación: aquí tenemos una array de objetos JSON llamados student_data. Usamos dos funciones principales en este programa, es decir, json_to_sheet() que acepta una array de objetos y los convierte en una hoja de trabajo y otra función es book_append_sheet() para agregar la hoja de trabajo al libro de trabajo.

Finalmente, todos los cambios se escriben en el archivo test.xlsx usando la función writeFile() que toma un libro de trabajo y un archivo de Excel como parámetro de entrada.

Paso para ejecutar la aplicación:

Ejecute el archivo read.js con el siguiente comando:

node write.js

Salida: El archivo final test.xlsx se vería así: 

Hoja 1:

Hoja 2:

Hoja 3: podemos ver que la hoja 3 se adjunta al test.xlsx como se muestra a continuación:

Publicación traducida automáticamente

Artículo escrito por praveshsshetty y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *