서버측의 기술없이 클라이언트 기술만으로 로컬에 저장된 엑셀 파일을 다룰 수 있는 라이브러리인 sheetjs에 대한 다양한 기능 중 엑셀 파일을 읽는 기능에 대한 JavaScript 코드를 정리해 봅니다.
이 라이브러리를 별도로 다운로드 받지 않고도 CDN을 통해 이용할 수 있습니다. 아래는 제가 이용한 CDN 접근입니다.
읽고자 하는 엑셀 파일은 다음과 같습니다.
위의 엑셀 파일을 선택하고, 선택된 엑셀 파일을 JSON 형식으로 변환해 콘솔에 출력하는 DOM 요소는 다음과 같습니다.
위의 input DOM 요소를 통해 파일을 선택할 때 발생하는 이벤트 코드는 다음과 같습니다.
function readExcel() { let input = event.target; let reader = new FileReader(); reader.onload = function () { let data = reader.result; let workBook = XLSX.read(data, { type: 'binary' }); workBook.SheetNames.forEach(function (sheetName) { console.log('SheetName: ' + sheetName); let rows = XLSX.utils.sheet_to_json(workBook.Sheets[sheetName]); console.log(JSON.stringify(rows)); }) }; reader.readAsBinaryString(input.files[0]); }
실행하고, 엑셀 파일을 선택해 보면 다음과 같은 내용이 콘솔에 표시되는 것을 확인할 수 있습니다.
SheetName: #인구수 [ { "지역명":"무안군 무안읍", "남자":8599, "여자":7900, "가구수":6968, "노인수":732, "아저씨":1359, "어린이":4627 }, { "지역명":"무안군 일로읍", "남자":3659, "여자":3243, "가구수":3526, "노인수":8711, "아저씨":8758, "어린이":4099 }, .... { "지역명":"무안군 운남면", "남자":7357, "여자":7667, "가구수":3624, "노인수":8110, "아저씨":8042, "어린이":9618 } ]
sheetjs 라이브러리는 엑셀을 읽는 기능 뿐만 아니라 생성도 가능하며 정교한 처리가 가능합니다.