web-dev-qa-db-fra.com

Lire un fichier Excel dans Reactjs

J'essaie et me tape déjà la tête en essayant de lire le fichier Excel dans Reactjs.

J'ai essayé plusieurs bibliothèques comme Sheetjs , Excel-parser , exceljs et ainsi de suite (comme 8-9).

Je reçois des erreurs étranges et différentes dans chaque bibliothèque.

Par exemple, j'utilise Excel-parser et j'obtiens l'erreur suivante

Module not found: 'child_process'

En effet, il s'agit d'un module de nœud et ne fonctionnera pas dans le navigateur.

Quelqu'un connaît une bibliothèque bonne et facile qui peut fonctionner avec reactjs dans le navigateur ?

9
Noman Ali

J'ai lu avec succès le fichier Excel en utilisant la version npm de Sheetjsxlsx.

Voici le code:

import * as XLSX from 'xlsx';
//f = file
var name = f.name;
const reader = new FileReader();
reader.onload = (evt) => { \\evt = on_file_select event
    /* Parse data */
    const bstr = evt.target.result;
    const wb = XLSX.read(bstr, {type:'binary'});
    /* Get first worksheet */
    const wsname = wb.SheetNames[0];
    const ws = wb.Sheets[wsname];
    /* Convert array of arrays */
    const data = XLSX.utils.sheet_to_csv(ws, {header:1});
    /* Update state */
    console.log("Data>>>"+data);
};
reader.readAsBinaryString(f);
11
Noman Ali

Je trouve que xlsx fonctionne plutôt bien. paquet xlsx

3
itch96

Noman ALi! Merci.
J'ai utilisé ce code

const handleUpload = (e) => {
    e.preventDefault();

    var files = e.target.files, f = files[0];
    var reader = new FileReader();
    reader.onload = function (e) {
        var data = e.target.result;
        let readedData = XLSX.read(data, {type: 'binary'});
        const wsname = readedData.SheetNames[0];
        const ws = readedData.Sheets[wsname];

        /* Convert array to json*/
        const dataParse = XLSX.utils.sheet_to_json(ws, {header:1});
        setFileUploaded(dataParse);
    };
    reader.readAsBinaryString(f)
}
1