본문 바로가기

개발/Web_JavaScript

SheetJS 라이브러리를 이용하여 엑셀로드시 날짜형식 처리방법

728x90
반응형

SheetJS 라이브러리를 이용하여 엑셀의 데이터를 쉽게 읽을 수 있고 JSON 형태로 변환할 수 있다.

하지만 날짜형식같은 경우는 엑셀의 날짜형식을 사용하여 숫자로 변환되기 때문에 상당히 번거롭다.

[SheetJS] 날짜형식 JSON
[엑셀] 일자

MSSQL 를 이용하면 엑셀날짜형식을 date type 으로 변경할 수 있지만 SheetJS API를 이용하면 간단히 변경가능하다.

-- 엑셀의 일자 숫자값을 DATETIME 으로 변환하는 MSSQL 쿼리
DECLARE @IN_DATE INT = 44785
SELECT CONVERT(CHAR(10), CAST(@IN_DATE - 2 AS SMALLDATETIME), 23)

 

XLSX.read 사용시 { cellDates: true, dateNF: 'yyyy-mm-dd' } 옵션을 추가하면 해결된다.

function excelUpload(fileObject) {
    let reader = new FileReader();

    reader.onload = function () {
        let data = reader.result;
        let workBook = XLSX.read(data, { type: 'binary', cellDates: true, dateNF: 'yyyy-mm-dd' });
        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(fileObject.files[0]);
}

[SheetJS] dateNF 옵션

dateNF 옵션을 사용하면 문자열로 반환이 되는데 substring이나 left 같은 함수를 이용하여 데이터를 핸들링하면 된다.

[
    {"일자":"2022-08-11T14:59:08.000Z"}
]

 

깃허브 참고 페이지 - https://github.com/SheetJS/sheetjs/issues/718

728x90
반응형