Little Code Review |Из Excel в Json Node JS - PullRequest
0 голосов
/ 10 июня 2019

Intro -> Я должен преобразовать файл Excel, который обычно получается следующим образом:

enter image description here

в файл Json, который должен выглядеть следующим образомэто:

"DE": {
   "Title":"Title_DE",
   "Subtitle":"Subtitle_DE",
   "Title_2":"Title_2_DE",
   "Subtitle_2":"Subtitle_2_DE"
}
"GR": {
   "Title":"Title_GR",
   "Subtitle":"Subtitle_GR",
   "Title_2":"Title_2_GR",
   "Subtitle_2":"Subtitle_2_GR"
}
"EN": {
   "Title":"Title_EN",
   "Subtitle":"Subtitle_EN",
   "Title_2":"Title_2_EN",
   "Subtitle_2":"Subtitle_2_EN"
}

Что я сделал -> Я использовал этот модуль узла xlsx для анализа файла Excel.Код в настоящее время работает, но что-то в моей голове говорит мне, что это был не лучший способ сделать это или, по крайней мере, был самый ясный или самый умный способ.

const XLSX = require('xlsx');
const fs = require('fs');
let workbook = XLSX.readFile('./src/xls/test.xlsx'); 
let sheet_name_list = workbook.SheetNames; //--> sheet names
let isocodes = [];
let labels = [];
let copy = [];
let obj = {};
let j = 0;

sheet_name_list.map(sheet => { //--> sheet names loop
    let worksheet = workbook.Sheets[sheet]; 
    for (index in worksheet) {
        let idCol = index.substring(1, 3);
        let idRow = index.substring(0, 1);
        if (idCol === "1") {
            isocodes.push((worksheet[index].v).trim()); //--> isocodes
        }
        if (idRow === "A") {
            labels.push((worksheet[index].v).trim()); //--> labels
        }
        if (idRow != "A" && idCol != "1") {
            copy.push(worksheet[index].v); //--> copy
        }
    }
});

isocodes.shift(); //--> delete undefined
labels.shift();
copy.shift();

isocodes.map(iso => { //--> create object to convert
    obj[iso] = {};
    for (let i = 0; i < labels.length; i++) {
        obj[iso][labels[i]] = copy[(i * isocodes.length) + j];
    }
    j++;
});
//--> write json files in their folder
fs.writeFile('src/lang/desktop.json', JSON.stringify(obj).replace(/\\n|\\r/g, ''), 'utf8', console.log("desktop json file created"));
fs.writeFile('src/lang/mobile.json', JSON.stringify(obj).replace(/\\n|\\r/g, ''), 'utf8', console.log("mobile json file created"));

Пожалуйста, поделитесь своими мыслями !!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...