본문 바로가기

TroubleShooting/C#

excel2json 자바스크립트

728x90

 엑셀(csv) 데이터를 JSON 데이터로 변경시키기 위해 직접 프로그래밍 하지 않고 할 수 있는 방법을 찾아본 결과, 최호진(Hojin Choi <hojin.choi@gmail.com>) 님이 작성하신 Excel2Json.js 자바스크립트가 있다. 

 엑셀 데이터를 오프라인에서 JSON properites, column array, row array 방식으로 변환해주는 아주 훌륭한 스크립트이다. 

 그런데, 약간 아쉬운 것이 bool 형에 해당하는 TRUE/FALSE 값을 문자열로 변환시킨다거나(TRUE -> "TRUE"), 비어있는 문자열 값은 숫자 0 으로 변환시키는 부분이다.

 C# JSON 라이브러리인 LitJson 으로 serialzie/deserialize 하다보면, 위의 사항들이 문제를 일으킨다.


 그래서, 소스를 약간 수정해서 bool 값인 "TRUE"/"FALSE" 를 true/false 로 바꾸도록 했다. 비어있는 문자열 같은 경우엔 엑셀의 필드를 그대로 두지 않고 "null" 이나 "none" 을 무조건 입력하게 서로 약속하고, 이 "null", "none" 문자열을 null 로 바꾸도록 했다.(replace 하는 한줄만 추가했다. 다른 세련된 방법으로 했으면 좋겠지만.....)


NAME VALUE COLOR DATE VAL1 VAL2

Alan 12 blue Sep. 25, 2009 true

Shan 13 "green blue" Sep. 27, 2009 false

John 45 orange Sep. 29, 2009 true

Minna 27 teal Sep. 30, 2009 false null

 위 데이터를 기존 스크립트를 이용하면, bool 형인 VAL1 필드가 문자열로 표시되고 널 문자열을 가진 VAL2 필드는 0 으로 표시된다.

[

{"NAME":"Alan","VALUE":12,"COLOR":"blue","DATE":"Sep. 25, 2009","VAL1":"true","VAL2":0},

{"NAME":"Shan","VALUE":13,"COLOR":"green\tblue","DATE":"Sep. 27, 2009","VAL1":"false","VAL2":0},

{"NAME":"John","VALUE":45,"COLOR":"orange","DATE":"Sep. 29, 2009","VAL1":"true","VAL2":0"},

{"NAME":"Minna","VALUE":27,"COLOR":"teal","DATE":"Sep. 30, 2009","VAL1":"false","VAL2":"null"}

]


 VAL2 의 값이 비어있을 경우 "null" 으로 대체하고, 수정된 스크립트로 실행하면 원하는 JSON 텍스트로 나온다.

[

{"NAME":"Alan","VALUE":12,"COLOR":"blue","DATE":"Sep. 25, 2009","VAL1":true,"VAL2":null},

{"NAME":"Shan","VALUE":13,"COLOR":"green\tblue","DATE":"Sep. 27, 2009","VAL1":false,"VAL2":null},

{"NAME":"John","VALUE":45,"COLOR":"orange","DATE":"Sep. 29, 2009","VAL1":true,"VAL2":null},

{"NAME":"Minna","VALUE":27,"COLOR":"teal","DATE":"Sep. 30, 2009","VAL1":false,"VAL2":null}

]


Excel2Json.js