web-dev-qa-db-fra.com

Lecture de gros fichiers Excel avec SheetJS/js-xlsx?

J'utilise ce paquet: https://www.npmjs.com/package/xlsx

Cependant, je peux avoir de très gros fichiers Excel pouvant contenir 1 million de lignes.

J'ai testé avec 600K lignes, ce qui correspond à environ 15 Mo de fichier Excel et mon code se bloque déjà sur localhost.

Y a-t-il un moyen de le diffuser? Je sais que la documentation indique qu’ils n’ont aucune sorte d’API en streaming, mais qu’il est question de mise en mémoire tampon?

 var reader = new FileReader();
    reader.onload = evt => {
      const bstr = evt.target.result;
      const wb = XLSX.read(bstr, { type: "binary" });
      const wsname = wb.SheetNames[0];
      const ws = wb.Sheets[wsname];
      const data = XLSX.utils.sheet_to_json(ws, { header: "A", defval: "" });
      });
    };
    reader.readAsBinaryString(this.file);
9
chobo2

Lorsque je devais lire des données à partir d'un très gros fichier Excel (environ 50 Mo), je le convertis au format csv sur le backend avec Excel Interop, ce qui prend moins de temps que d'obtenir les données d'un fichier Excel. Ensuite, obtenez le n premier nombre de lignes via le lecteur de flux. Ce qui vous donnera les données nécessaires pour prévisualiser. Envoyez-le au serveur frontal pour un aperçu. C'est ce que je ferais.

1
Bibek Shah