无法在'FileReader'上执行'readAsBinaryString':参数1的类型不是'Blob'

问题描述 投票:0回答:1

我正在尝试解析xls文件,请参见以下文件https://filebin.net/jm37356p8nkzgycm

获取错误

无法在'FileReader'上执行'readAsBinaryString':参数1的类型不是'Blob'。

这是我的代码https://stackblitz.com/edit/react-e9zsto

handleFile = (file /*:File*/) => {
    /* Boilerplate to set up FileReader */
    const reader = new FileReader();
    const rABS = !!reader.readAsBinaryString;
    reader.onload = e => {
      /* Parse data */
      const bstr = e.target.result;
      const wb = XLSX.read(bstr, { type: rABS ? "binary" : "array" });
      /* Get first worksheet */
      let arr = xslToJson(wb);
    };
    if (rABS) reader.readAsBinaryString(file);
    else reader.readAsArrayBuffer(file);
  };
javascript reactjs xls
1个回答
0
投票

您的handleFile函数不接收文件而是事件作为参数。将其更改为如下所示:

handleFile = (e) => {
  const file = e.target.files[0];
  /* Boilerplate to set up FileReader */
  const reader = new FileReader();
  const rABS = !!reader.readAsBinaryString;
  reader.onload = e => {
    /* Parse data */
    const bstr = e.target.result;
    const wb = XLSX.read(bstr, { type: rABS ? "binary" : "array" });
    /* Get first worksheet */
    let arr = this.xslToJson(wb);
  };
  if (rABS) reader.readAsBinaryString(file);
  else reader.readAsArrayBuffer(file);
};

完整代码:https://stackblitz.com/edit/react-e9zsto

© www.soinside.com 2019 - 2024. All rights reserved.