꾸준히 공부하는 개발자

[Node.js] local에서 blob으로 오는 xlsx 읽기 본문

Node.js

[Node.js] local에서 blob으로 오는 xlsx 읽기

kauboy 2019. 11. 9. 15:14

react admin 을 사용중 엑셀을 받으면 blob 으로 와서 이 엑셀을 읽는데 삽질을 꽤 많이 했다.
이런 blob 형식으로 읽는거는 처음이였으며, 경로로 읽는건 안되길래 검색도중 XMLHTtpRequest로 읽는 것을 보고 바로 적용해 보았더니 읽혀서 사용했다. 아직 blob, local, 통신방식을 나 자신은 잘 이해하지 못한것같아 나중에 공부하는 포스팅을 올리겠다.

params = "blob:localhost:3000/asfasfsdfsad" // 이런식이였던 것 같다.

const asyncRequestExcel = (params) => {
  return new Promise(function (resolve, reject) {
    const excelUrl = params.data.excel.src
    const oReq = new XMLHttpRequest();
    oReq.open("GET", excelUrl, true);
    oReq.responseType = "arraybuffer";
    oReq.onload = function (e) {
      const arrayBuffer = oReq.response;
      /* convert data to binary string */
      const data = new Uint8Array(arrayBuffer);

      const arr = new Array();
      for (let i = 0; i != data.length; ++i) {
        arr[i] = String.fromCharCode(data[i]);
      }

      const bstr = arr.join("");
      const cfb = XLSX.read(bstr, {type: 'binary'});

      const parsing = cfb.SheetNames.map(function (sheetName, index) {
        // Obtain The Current Row As CSV
        return XLSX.utils.sheet_to_json(cfb.Sheets[sheetName]);
      })
      resolve(parsing)
    }
    oReq.send()
  })
}
Comments