CSV와는 다르다! CSV와는!
header: 1 이면 행이 객체가 아니라 배열로 나와 열을 인덱스로 자른다 — 빈 행도 [] 로 남아서 filter 로 걷어낸다.1
const fs = require('fs')
const XLSX = require('xlsx')
const buf = fs.readFileSync('developer_labels_20181221.xlsx')
const workbook = XLSX.read(buf, { type: 'buffer' })
const roa = XLSX.utils.sheet_to_json(workbook.Sheets[workbook.SheetNames[0]], {
header: 1,
})
const result = roa
.slice(1)
.map((item) => item.slice(1, 4))
.filter((item) => item.some(Boolean))
.reduce(
(p, n) => {
const [key, en, ko] = n
const newKey = key.toLowerCase().replace(/\-/g, '_')
p['en'][newKey] = en
p['ko'][newKey] = ko
return p
},
{ en: {}, ko: {} }
)
fs.writeFileSync('en.json', JSON.stringify(result.en), 'utf8')
fs.writeFileSync('ko.json', JSON.stringify(result.ko), 'utf8')
Footnotes
-
Array Output | SheetJS:
header: 1— “Generate an array of arrays” / “Whenheaderis1, the default is to generate blank rows.” ↩