【问题标题】:Failed to execute 'readAsBinaryString' on 'FileReader': parameter 1 is not of type 'Blob'无法在“FileReader”上执行“readAsBinaryString”:参数 1 不是“Blob”类型
【发布时间】:2019-10-04 14:54:52
【问题描述】:

我正在尝试解析 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】:

    您的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);
    };
    

    【讨论】:

      猜你喜欢
      • 2016-01-02
      • 2023-03-04
      • 2018-04-01
      • 2016-02-10
      • 2021-12-04
      • 2015-04-23
      • 2015-12-07
      • 1970-01-01
      相关资源
      最近更新 更多