Java Script

[JavaScript] 엑셀 업로드 구현하기

봉주니 2021. 1. 18. 14:38

엑셀업로드 후 데이터를 화면에 뿌리는 용도로 사용.

 

 

/* :::: 엑셀업로드 시작 :::  */
        var X = XLSX;

        vm.fileOpen = function(){
            var xlf = document.getElementById('files');
            
            xlf.click();
        };

        vm.fileOptions = {
                          showFileList: false,
                          async: false,
                          select: function(e){
                              console.log(e);
                              vm.fileLoad(e);
                          },
                          remove : function(e){
                              console.log(e.files);
                          }
                      };

        vm.fileLoad = function(e){
            var file   = e.files[0];
            {
                var reader = new FileReader();
                
                reader.onload = function(e) {
                    var data = e.target.result;
                    var arr = vm.fixdata(data);
                    var wb = X.read(btoa(arr), {type: 'base64'});
                    vm.processWorkBook(wb);
                }
                reader.readAsArrayBuffer(file.rawFile);
            }
          };

          vm.fixdata = function(data){
            var o = "";
            var l = 0;
            var 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;
          };
          
          vm.processWorkBook = function(wb){
            var excelUploadList = vm.toJson(wb);
            if(excelUploadList){
            
            }
          
           vm.toJson = function(workbook){
            var roa;
            var index = 0;
            workbook.SheetNames.forEach(function(sheetName) {
                if(index == 0) roa = X.utils.sheet_to_row_object_array(workbook.Sheets[sheetName],{range:2});
                index++;
            });
            return roa;
          };
          /* :::: 엑셀업로드 끝 :::  */
          

 

반응형