在Reactjs中读取excel文件

Nom*_*Ali 11 javascript excel jquery reactjs

在尝试读取Reactjs中的excel文件时,我正在尝试并试探我的脑袋.

我已经尝试了多个库,如Sheetjs,excel-parser,exceljs等(如8-9)库.

我在每个库中都会遇到奇怪和不同的错误.

例如,我使用excel-parser并获得以下错误

Module not found: 'child_process'
Run Code Online (Sandbox Code Playgroud)

那是因为它是一个节点模块,不能在浏览器中工作.

有人知道一些好的和简单的库可以在浏览器中使用reactjs吗?

Nom*_*Ali 13

我已经使用Sheetjs的npm版本xlsx成功读取了excel文件.

这是代码:

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);
Run Code Online (Sandbox Code Playgroud)

  • 你如何获取该文件?您必须将 require 与 excel-loader 一起使用吗? (2认同)

小智 13

诺曼阿里!谢谢你。
我用过,这个代码

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)
}
Run Code Online (Sandbox Code Playgroud)


小智 6

此处找到的最简单的方法之一:此方法也适用于读取 .xlsx、.txt 或其他格式。

片段:

import * as XLSX from 'xlsx';
...

<input
type="file"
onInput={(e) => this._handleFile(e)}
/>
...

private _handleFile = async (e: any) => {
    console.log('reading input file:');
    const file = e.target.files[0];
    const data = await file.arrayBuffer();
    const workbook = XLSX.read(data);
    const worksheet = workbook.Sheets[workbook.SheetNames[0]];
    const jsonData = XLSX.utils.sheet_to_json(worksheet, {
        header: 1,
        defval: "",
    });

    //console.log(e.target.files[0]);
    //console.log(workbook);
    console.log(jsonData);
}
Run Code Online (Sandbox Code Playgroud)