Не удалось выполнить readAsBinaryString для FileReader: параметр 1 не относится к типу Blob - PullRequest
2 голосов
/ 04 октября 2019

Я пытаюсь проанализировать файл xls, см. Ниже файл https://filebin.net/jm37356p8nkzgycm

Ошибка получения

Не удалось выполнить readAsBinaryString для FileReader: параметр 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);
  };

1 Ответ

1 голос
/ 04 октября 2019

Ваша 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);
};
...