0

0

聊聊怎么使用Node将Excel转为JSON

青灯夜游

青灯夜游

发布时间:2022-11-28 20:02:53

|

2290人浏览过

|

来源于掘金社区

转载

怎么使用nodeexcel转为json?下面本篇文章给大家介绍一下node中转换excel成json的方法,希望对大家有所帮助!

聊聊怎么使用Node将Excel转为JSON

目前想使用Cocos Creator做一个文字游戏,类似于我的人生重开模拟器

那么其中最重要的一点就是关于数据的存储了。在我的人生重开模拟器中大部分事件和天赋的数据是存储在excel表格当中的,当然如果要使用Cocos Creator,因为我不准备布置服务器,所以需要将数据提前转换成JSON文件,那么可以创建一个项目,使用node读取excel文件,并通过格式转换,将数据转换成JSON。【相关教程推荐:nodejs视频教程

这里网上有一些node调用excel的库,我使用了node-xlsx,此库底层基于强大的 SheetJS 构建,对 xlsx 文档的格式兼容性足够好。

npm地址:node-xlsx - npm (npmjs.com)

开始

在此之前我已经新建了一个天赋表格talentTable.xlsx,里面已经添加了许多天赋,并且有不同的属性加成

image.png

pnpm init创建一个项目,然后使用pnpm add node-xlsx将库导入项目当中。

创建一个主文件excelMain.js,此文件中需要引入需要的库

import { fileURLToPath } from 'node:url'
import path from 'path';
import fs from 'fs';
import xlsx from 'node-xlsx';

可以提前先将需要的存储的json文件talent.json创建好,通过path将xlsx和json的文件夹相对路径找到

// 获取 __dirname 的 ESM 写法
const __dirname = path.dirname(fileURLToPath(import.meta.url))
// xlsx文件路径
const xlsxPath = path.resolve(__dirname, '../../assets/JsonData');

因为我有很几个表格,所以可以创建一个表格的路径对象

// 事件, 玩家, 门派, 天赋, 武学
let dataNames = ['event', 'player', 'sect', 'talent', 'skill']
let dataPaths = {};
for(let iname of dataNames) {
    dataPaths[iname] = {
        xlsx: path.resolve(xlsxPath, `./${iname}Table.xlsx`),
        json: path.resolve(xlsxPath, `./${iname}.json`)
    }
}

image.png

然后创建一个读取文件方法,这里需要用到fs中的readFileSync

// 读取数据表方法
const readFileData = (tableName)=>{
    let fname = dataPaths[tableName].xlsx
    const xlsxData = xlsx.parse(fs.readFileSync(fname));
    ......
}

这里读取到的xlsxData是一个数组对象,数组中的元素代表的其实是一张张sheet表格,xlsx表格中并不是只有一个表格,所以才会是数组对象,不过我需要的只是第一张表格。

白瓜AI
白瓜AI

白瓜AI,一个免费图文AI创作工具,支持 AI 仿写,图文生成,敏感词检测,图片去水印等等。

下载

image.png

image.png

所以获取xlsxData[0].data的数据即可,data的数据是按照行排列的数组对象

image.png

然后到转换成JSON格式数据是,需要变成属性:属性值的格式,所以可创建一个方法,将第一行属性和从第三行开始的数据结合,创建一个对象数组。

const oneAndTwo = (arr)=>{
    if (arr.length <= 2) return [];
    let newarr = []
    for(let i = 2; i < arr.length; i++) {
        let newobj = {};
        for(let j = 0; j < arr[0].length; j++) {
            let jname = arr[0][j];
            newobj[jname] = (arr[i][j] != undefined)? arr[i][j] : null;
        }
        newarr.push(newobj)
    }
    return newarr;
}

这样返回的对象就如下了

image.png

接下来就可以将数据开始写入json文件当中,使用fs.writeFile方法,格式使用utf-8即可

// 写入JSON文件方法
const writeJson = (arr, jsonName)=>{
    let path = dataPaths[jsonName].json;
    let d = { data: arr }
    fs.writeFile(path, JSON.stringify(d), 'utf-8', (err)=>{
        console.log(`${jsonName}写入成功`);
    });
}

image.png

image.png

这样需要的游戏固定事件和天赋数据json就可以出现了。

对于JSON数据存储为excel对象也比较容易,需要用到xlsx.build方法,这里就不做过多的介绍了,可以去参考npm地址上的使用方法。

更多node相关知识,请访问:nodejs 教程

相关文章

WPS零基础入门到精通全套教程!
WPS零基础入门到精通全套教程!

全网最新最细最实用WPS零基础入门到精通全套教程!带你真正掌握WPS办公! 内含Excel基础操作、函数设计、数据透视表等

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

412

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

533

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

309

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

74

2025.09.10

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

510

2023.06.20

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

244

2023.07.28

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

257

2023.08.03

js是什么意思
js是什么意思

JS是JavaScript的缩写,它是一种广泛应用于网页开发的脚本语言。JavaScript是一种解释性的、基于对象和事件驱动的编程语言,通常用于为网页增加交互性和动态性。它可以在网页上实现复杂的功能和效果,如表单验证、页面元素操作、动画效果、数据交互等。

5274

2023.08.17

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

40

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
快速入门Node.JS全套完整版
快速入门Node.JS全套完整版

共83课时 | 8.3万人学习

nodejs开发基础教程
nodejs开发基础教程

共15课时 | 4.5万人学习

JavaScript设计模式视频教程
JavaScript设计模式视频教程

共28课时 | 5.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号