반응형
내 컴퓨터에 들어있는 엑셀파일의 내용을 읽어들이는 예제이다.
컴퓨터에 있는 엑셀 파일을 선택할 수 있도록 "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 |