数据来自Excel in .json

yeotifhr  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(127)

作为一个非程序员,在互联网上搜索之后,我没有找到解决以下挑战的方法。
初始状态:我有一个Excel文件,它具有与所附图像“原始数据”相同的结构,只有5000多行。
目标状态:我想要一个.json,其结构如下:

{
    "Berlin": {
        "1-Personen-Haushalt": {
            "1 Zimmer": [
                "20 qm",
                "30 qm",
                "40 qm",
                "50 qm",
                "60 qm",
                "70 qm"
            ],
            "2 Zimmer": [
                "20 qm",
                "30 qm",
                "40 qm",
                "50 qm",
                "60 qm",
                "70 qm"
            ]
        },

字符串

它应该作为组合框的基础。选择第一个应该定义第二个的选择选项。选择第二个应该定义第三个的选择选项。等等。
它不像我的例子中那么琐碎,所以并不总是有“20 qm”或“2齐默”。我的意思是真实的模式。
我已经对数据进行了一点格式化,希望这样会更容易。
我已经尝试在Visual Studio Code中将格式化的数据插入到.json中,但没有得到想要的结果。
也许你有一个想法如何处理这一点:)
Raw DataFormatted Data的数据库

o3imoua4

o3imoua41#

我的建议是,首先将xlsx文件转换为csv,然后使用papaparse解析它,然后使用某种函数来获得您想要的内容。
Papaparse部分:

let data;
const csv = fs.readFileSync('example.csv', 'utf8');

Papa.parse(csv, {
  complete: (results) => {
    results.data.pop();
    data = results.data;
  }
});

字符串
formatter来获取你想要的json文件:

function formatter(data) {
  let result = {};
  data.forEach((item) => {
    let [city, person, room, size] = item;
    if (!result[city]) {
      result[city] = {};
    }
    if (!result[city][person]) {
      result[city][person] = {};
    }
    if (!result[city][person][room]) {
      result[city][person][room] = [];
    }
    result[city][person][room].push(size);
  });
  return result;
}


你可以将结果保存为json:

let result = formatter(data);
fs.writeFileSync('result.json', JSON.stringify(result, null, 2));

相关问题