STUDY/vuejs

[vue: worklist 제작] 1. csv파일을 json으로 변환하기

수밤바 2022. 9. 15. 10:49
728x90

엑셀 표를 정리한 후 csv파일로 내보내기

csv파일을 json으로 변환

 

 

전체코드

const fs = require('fs');

const csvFile = fs.readFileSync('./src/assets/ia-csv2.csv').toString();
let json = [];
let keys = [];
let list = [];
const csvArr = csvFile.replace('\r','').split('\n');
const header = csvArr[0].split(',');

keys[0]='worklist-status';
for (let k=0; k<header.length; k++){
  keys[1+k] = header[k];
}
keys[keys.length]='worklist-path';
keys[keys.length]='worklist-note';

for (let i=1; i<csvArr.length; i++){
  let obj = {};
  const row = csvArr[i].split(',');

  obj['worklist-status']='';
  for (let k=0; k<header.length; k++){
    obj[header[k]] = row[k];
  }
  obj['worklist-path']='';
  obj['worklist-note']='';
  list.push(obj);
}
json = JSON.stringify({'keys':keys, 'lists':list});

fs.writeFileSync('./src/assets/ia-json.json',json)

 

 

 

 

node fs를 이용해 csv파일을 읽는다

const fs = require('fs');

const csvFile = fs.readFileSync('./src/assets/ia-csv2.csv').toString();

 

 

thead에 해당하는 keys와 리스트 lists를 구분하여 담는다

keys와 lists를 담을 json 변수도 만든다

let json = [];
let keys = [];
let list = [];

 

csv파일은 쉼표(,)와 줄바꿈으로 구분되어있다

1depth, 2depth, 페이지명칭, TYPE, PAGE ID
메인     , 뉴스.     ,                 , PAGE, PC-1000

 

엔터(/r)을 삭제하고 줄바꿈(/n) 기준으로 한 줄씩 배열로 변환한다

const csvArr = csvFile.replace('\r','').split('\n');

 

 

첫번째 열(thead)를 keys에 넣기위해 쉼표(,)로 나눠서 배열로 변환

header의 첫번째에 상태(진행중,완료 등), 마지막 두 열은 파일위치 및 링크표시와 비고란을 추가하여 keys에 담는다.

명칭의 중복을 피하기위해 worklist- 접두사를 추가했다. 

화면에 출력할때는 적절한 명칭으로 변환하여 랜딩할 예정

const header = csvArr[0].split(',');

keys[0]='worklist-status';
for (let k=0; k<header.length; k++){
  keys[1+k] = header[k];
}
keys[keys.length]='worklist-path';
keys[keys.length]='worklist-note';

 

 

csvArr 리스트 한줄씩 header의 타이틀과 매칭하여 객체 형식으로 만든다 {'1depth':'메인', '2depth':'', , ,}

for (let i=1; i<csvArr.length; i++){
  let obj = {};
  const row = csvArr[i].split(',');

  obj['worklist-status']='';
  for (let k=0; k<header.length; k++){
    obj[header[k]] = row[k];
  }
  obj['worklist-path']='';
  obj['worklist-note']='';
  list.push(obj);
}

 

담아둔 keys와 lists를 묶는다

json = JSON.stringify({'keys':keys, 'lists':list});

 

fs를 이용하여 json파일로 생성

fs.writeFileSync('./src/assets/ia-json.json',json)

 

 

이 실행파일을 convert.js로 저장하여

node로 파일을 실행해주면 파일변환과 생성이 완료된다

node convert.js

최초 IA문서를 필요한 부분만 간추려 엑셀로 수정하고 csv파일로 변환하여 ./src/assets/폴더에 넣은뒤

node convert.js를 실행하면 동일한 폴더에 ia-json.json 파일이 생성된다