es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Lea el archivo Excel que se encuentra en la carpeta src de la aplicación de React.

He creado una aplicación de react usando react CLI.

Ahora he creado una carpeta llamada data, ahora quiero leer esos datos usando el paquete npm xlsx. Sin embargo, no está funcionando. Creo que puede tener algo que ver con la forma en que puedo hacer referencia al archivo de Excel porque obtengo un aviso que dice “La propiedad ‘Sheets’ no existe en el tipo ‘string'” (Imagen a continuación).

Pensé que sería fácil leer un archivo de Excel (incluso uno local), pero no puedo resolverlo. ¿Alguien puede ayudar? He revisado muchas preguntas de Stack Overflow relacionadas con esto, pero sin éxito.

Mi código

import "./App.css";
import XLSX from "xlsx";

let fileName = "./data/menu.xlsx";
var firstWorksheet = fileName.Sheets[fileName.SheetNames[0]];
var data = XLSX.utils.sheet_to_json(firstWorksheet, { header: 1 });
console.log(fileName);

Imagen

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Solución

    El problema parece estar porque estás intentando acceder a las propiedades de una cadena de texto (fileName) en lugar del objeto del archivo de Excel real. Para solucionar esto, debes utilizar el método readFile del paquete XLSX para leer el archivo de Excel y luego analizarlo.

    Así es como puedes modificar tu código para que funcione:

    import "./App.css";
    import XLSX from "xlsx";
    
    let fileName = "./data/menu.xlsx";
    
    // Utiliza el método readFile para leer el archivo de Excel
    // Pasa el nombre del archivo y un objeto de opciones como parámetros
    const file = XLSX.readFile(fileName, { type: "binary" });
    
    // Obtén la primera hoja del archivo utilizando su nombre
    const first_worksheet = file.Sheets[file.SheetNames[0]];
    
    // Convierte la hoja en un objeto JSON
    const data = XLSX.utils.sheet_to_json(first_worksheet, { header: 1 });
    
    console.log(data);
    

    ¡Espero que esto te ayude!

Comments are closed.