๐ŸŽจ Front-End

[SheetJS] ๊ฐœ์ฒด๊ฐ€ 'slice' ์†์„ฑ์ด๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ฌใ„น1๋ธŒ 2017. 7. 19. 10:24
๋ฐ˜์‘ํ˜•

# ๋Œ€๋ถ€๋ถ„ "๊ฐœ์ฒด"๊ฐ€ 'xxx' ์†์„ฑ์ด๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์— ๊ด€๋ จ๋œ ์—๋Ÿฌ๋Š”, ์‹ค์ œ "๊ฐœ์ฒด"์— xxx๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

ex) data.slice(l*w) ==> "๊ฐœ์ฒด๊ฐ€ 'slice' ์†์„ฑ์ด๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."๋ผ๋Š” ์—๋Ÿฌ๊ฐ€ ๋œฌ๋‹ค๋ฉด

data๋ฅผ ๋จผ์ € ์‚ดํŽด๋ณผ ๊ฒƒ. prototype๋กœ ์„ ์–ธ๋œ "slice"๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•  ๊ฒƒ.


#

ie11 ํ™˜๊ฒฝ์—์„œ ie10 ๋ฒ„์ „์œผ๋กœ ํ…Œ์ŠคํŒ…ํ–ˆ์„ ๋•Œ ์ƒ๊ธฐ๋Š” ์˜ค๋ฅ˜

"๊ฐœ์ฒด๊ฐ€ 'slice' ์†์„ฑ์ด๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."

 

-> "xlsx.full.min.js" ๋งŒ importํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํ”„๋กœ์ ํŠธ์— ํฌํ•จ๋œ "shim.js" importํ•˜๋ฉด ํ•ด๊ฒฐ.

 

function fixdata(data) {
  var o = "", l = 0, w = 10240;
  for(; l<data.byteLength/w; ++l) o+=String.fromCharCode.apply(null,new Uint8Array(data.slice(l*w,l*w+w)));
  o+=String.fromCharCode.apply(null, new Uint8Array(data.slice(l*w)));
  return o;

 

function fnParsingExcel(e) {
    var file = e.target.files[0];
    var oReq;
    var workbook;
    var reader = new FileReader();
    var name = file.name;

    var agent = navigator.userAgent.toLowerCase();
    if ( (navigator.appName == 'Netscape' && agent.indexOf('trident') != -1) || (agent.indexOf("msie") != -1)) {
        // ie10 ์ด์ƒ์ผ ๊ฒฝ์šฐ
        reader.readAsArrayBuffer(file);
        rABS = false;
    }
    else {
        // ie10์„ ์ œ์™ธํ•œ ๊ฒฝ์šฐ
        reader.readAsBinaryString(file);
    }

    reader.onload = function(e) {
        var data = e.target.result;
       
        if (rABS) {
            /* if Binary String, read with type 'binary' */
            workbook = XLSX.read(data, {type:'binary'});
        } else {
            /* if array buffer, convert to base64 */
            var arr = fixdata(data);
            workbook = XLSX.read(btoa(arr), {type:'base64'});
        }
      
        /* DO SOMETHING WITH WOOKBOOK HERE */
    };
}

 

๋ฐ˜์‘ํ˜•