본문 바로가기

HTML&JS/JS

JAVASCRIPT - EXCEL 파일 데이터 읽기 불러오기

반응형

내 컴퓨터에 들어있는 엑셀파일의 내용을 읽어들이는 예제이다.

컴퓨터에 있는 엑셀 파일을 선택할 수 있도록 "Input" 태그를 이용하였고, 파일 선택이 완료되면 엑셀 파일을 읽어올 수 있도록 하였다.

 

파일선택을 위한 Input 태그

   : 파일을 선택하게 되면, "read_xlsx" 함수가 실행된다.

<input type='file' id='uploadfile' onchange='read_xlsx()'></input>

 

 

엑셀 내용을 읽어들이는  함수

   : sheetname에 저장된 워크시트의 셀 위치 ia번째 줄, ib행의 셀값을 value 변수에 저장한다.

function read_xlsx(){

  // set input file
  var f = document.getElementById( 'uploadfile' ).files[0]; //input file 객체를 가져온다.

  var reader = new FileReader();

  reader.onload = function() {

    var xlsx_sheet, sheetname;

    var data = reader.result;

    var workbook = XLSX.read(data, {type: 'array'}); // parse the file

    var shtml = '';
			
    /* DO SOMETHING WITH workbook HERE */
    
    xlsx_sheet = workbook.Sheets[ sheetname ]; // 워크시트 sheetname (변수임) 설정
    
    cell = xlsx_sheet[XLSX.utils.encode_cell({c:ib , r:ia})];  // 엑셀 열ia줄의, ib행의 셀

    value = XLSX.utils.format_cell(cell);	// 셀 값을 value 변수에 저장

  }
	
  // "reader" trigger
  reader.readAsArrayBuffer(f);

}

 

엑셀 내용을 배열로 읽어들이는  함수

   : sheetname 내의 모든 데이터를 배열에 저장한다.

function read_xlsx(){

  // set input file
  var f = document.getElementById( 'uploadfile' ).files[0]; //input file 객체를 가져온다.

  var reader = new FileReader();

  reader.onload = function() {

    var xlsx_sheet, sheetname;

    var data = reader.result;

    var workbook = XLSX.read(data, {type: 'array'}); // parse the file

    var shtml = '';
			
    /* DO SOMETHING WITH workbook HERE */
    
    xlsx_sheet = workbook.Sheets[ sheetname ]; // 워크시트 sheetname (변수임) 설정
    
	var res = [];
    
	var range = XLSX.utils.decode_range( xlsx_sheet['!ref'] );  // 워크시트 내용 범위 설정

	for( ia = 0; ia <= range.e.r; ia++ ){			// 워크시트내의 마지막 열까지

		for( ib = 0; ib <= range.e.c; ib++ ){		// 워크시트내의 마지막 행까지
	
			cell = xlsx_sheet[XLSX.utils.encode_cell({c:ib , r:ia})];
			
			if( cell != null ){			// 셀값이 Null이 아닐 경우만
				
				ores[ia][ib] = XLSX.utils.format_cell(cell); // 셀값을 배열에 저장

			}
		}
	}

  }
	
  // "reader" trigger
  reader.readAsArrayBuffer(f);

}

 

전체 소스 코드 (워크시트 내용을 배열로 읽어들이기)
<html>
<head>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.15.6/xlsx.core.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/exceljs/4.2.1/exceljs.min.js"></script>
  <script type="text/javascript"> 
  
    function read_xlsx(){
    
      // set input file
      var f = document.getElementById( 'uploadfile' ).files[0]; //input file 객체를 가져온다.
    
      var reader = new FileReader();
    
      reader.onload = function() {
    
        var xlsx_sheet, sheetname;
    
        var data = reader.result;
    
        var workbook = XLSX.read(data, {type: 'array'}); // parse the file
    
        var shtml = '';
    			
        /* DO SOMETHING WITH workbook HERE */
        
        xlsx_sheet = workbook.Sheets[ sheetname ]; // 워크시트 sheetname (변수임) 설정
        
    	var res = [];
        
    	var range = XLSX.utils.decode_range( xlsx_sheet['!ref'] );  // 워크시트 내용 범위 설정
    
    	for( ia = 0; ia <= range.e.r; ia++ ){			// 워크시트내의 마지막 열까지
    
    		for( ib = 0; ib <= range.e.c; ib++ ){		// 워크시트내의 마지막 행까지
    	
    			cell = xlsx_sheet[XLSX.utils.encode_cell({c:ib , r:ia})];
    			
    			if( cell != null ){			// 셀값이 Null이 아닐 경우만
    				
    				ores[ia][ib] = XLSX.utils.format_cell(cell); // 셀값을 배열에 저장
    
    			}
    		}
    	}
    
      }
    	
      // "reader" trigger
      reader.readAsArrayBuffer(f);
    
    }  
    
  </script>
</head>

<body>

</body>
  <input type='file' id='uploadfile' onchange='read_xlsx()'></input>
</html>

 

 

 

반응형

'HTML&JS > JS' 카테고리의 다른 글

역행렬 계산 - 가우스 조던 소거법 (Gauss Jordan)  (0) 2023.09.14
JAVASCRIPT - EXCEL STYLING  (0) 2023.09.14
JAVASCRIPT - EXCEL FILE 생성 / 저장  (0) 2023.09.12