From 2f55a178b599e1def04e9ebbced424c107f19518 Mon Sep 17 00:00:00 2001 From: aixianling Date: Wed, 22 Jan 2025 17:43:03 +0800 Subject: [PATCH] =?UTF-8?q?feat(tools):=20=E6=B7=BB=E5=8A=A0=20JSON=20?= =?UTF-8?q?=E8=BD=AC=20Excel=20=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 json2excel.js 工具脚本,用于将 JSON 数据转换为 Excel 文件 - 在 package.json 中添加 xlsx 依赖 - 使用 SpecialRingConfig.json 作为示例进行转换并生成 SpecialRingConfig.xlsx 文件 --- excels/SpecialRingConfig.xlsx | Bin 0 -> 47598 bytes package.json | 3 +- tools/json2excel.js | 54 ++++++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 excels/SpecialRingConfig.xlsx create mode 100644 tools/json2excel.js diff --git a/excels/SpecialRingConfig.xlsx b/excels/SpecialRingConfig.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..546a6f0fb3bbbda4c98b856f17cd8e3b438d558b GIT binary patch literal 47598 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%0DyLh+ap)y;s4&aY z)_&tTl*;1`?f*DF-Qpj|%caGYm~*VZN^WRModJQATY0#CTcj}lmK{xvQ4X41-=maI z5mySH^K}ZtJ@Y?|c18MYexJ88*KZ=ZSoy15WR!w!);5-KrXH!zxsCO$-)%32+Ga}} z*_6B6^9KbjBH$9#AS1wPaD73C8IoVOs_BggOw6U$OX8;cf7WV!{CQC|-0cz|QF24BV0cSaF1ncz;HoO@zs;jS}E37KoFd}}XZHVpr2FqSmISmS|{c7j- zG59w zxzwbsRdlJkm6&p0=3=jUMv-ZS%qHEN)iUeo<1eV>(bqTFNY$jh1b%WTC4rFTsc8~R z(?~N|bOL%0`=ipfX!UP=D66z7%WC_b9LKmF`O#6Pl;D6I#5!zK2nNa2%CBmxoU{zTEaG54^GwtR5U0xQ*}{n?w~?C!rMYMU zFJOSND*}5U&Q4*9&w(C8cMNjSFX}CQGwsil>c*?bSB@ps2|Q=WMbPMzH$aQA2W>Hw zdsM=8?wZ(yWK4^gKu#RfPSKV@UliaazRBvtn<)OY(xxga7BnfHnMY0{<%`B=mq|#v z4yjoo<&qVaC1tQs#)PUSRP4N64Q)U;Ed(Y#0;H?s(%Hn)9ZJj_TI(aIaK$rIIXf&% z2DqV+L%GvPfwy6HY%#0_`IaA*0G?6AZ{q)rLfNl
  • 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 { + for (const key in obj) { + if (isNaN(key) && Object.hasOwnProperty.call(obj, key)) { + if(typeof obj[key] === "object") + obj[key] = JSON.stringify(obj[key]); + } else if (typeof obj[key] === "object") { + findElement(obj[key]); + } + } + arr.push(obj); + }; + findElement(jsonData); + return arr; +} +function json2excel(jsonData, fileName) { + if (!Array.isArray(jsonData)) jsonData = Object.values(jsonData); + const data = handleJson2ArrayJson(jsonData)?.filter(Boolean); + + const workbook = XLSX.utils.book_new(); + const worksheet = XLSX.utils.json_to_sheet(data); + XLSX.utils.book_append_sheet(workbook, worksheet, fileName); + XLSX.writeFile(workbook, `./excels/${fileName}.xlsx`); +} + +const start = () => { + const files = fs.readdirSync(folderPath); + + // 过滤出所有的 JSON 文件 + const jsonFiles = files.filter((file) => path.extname(file) === ".json").filter((file) => scope.map((e) => `${e}.json`).includes(file)); + jsonFiles.forEach((file) => { + const json = JSON.parse(fs.readFileSync(path.join(folderPath, file), "utf8")); + const filename = path.basename(file, path.extname(file)); + json2excel(json, filename); + }); +}; +start();