返回顶部
首页 > 资讯 > 前端开发 > 其他 >聊聊怎么使用Node将Excel转为JSON
  • 509
分享到

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

nodejs​nodeExceljson 2022-11-28 22:11:12 509人浏览 泡泡鱼
摘要

目前想使用Cocos Creator做一个文字游戏,类似于我的人生重开模拟器。那么其中最重要的一点就是关于数据的存储了。在我的人生重开模拟器中大部分事件和天赋的数据是存储在excel表格当中的,当然如果要使用Cocos Creator,因为

目前想使用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表格中并不是只有一个表格,所以才会是数组对象,不过我需要的只是第一张表格。

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将Excel转为JSON的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: 聊聊怎么使用Node将Excel转为JSON

本文链接: https://lsjlt.com/news/173613.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 聊聊怎么使用Node将Excel转为JSON
    目前想使用Cocos Creator做一个文字游戏,类似于我的人生重开模拟器。那么其中最重要的一点就是关于数据的存储了。在我的人生重开模拟器中大部分事件和天赋的数据是存储在excel表格当中的,当然如果要使用Cocos Creator,因为...
    99+
    2022-11-28
    nodejs​ node Excel json
  • 如何使用Node将Excel转为JSON
    这篇文章主要介绍了如何使用Node将Excel转为JSON的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用Node将Excel转为JSON文章都会有所收获,下面我们一起来看看吧。开始在此之前我已经新建了一...
    99+
    2023-07-04
  • 聊聊如何用PHP将数据转成JSON格式
    在互联网的应用中,JSON (JavaScript Object Notation) 是一种常用的数据交换格式。在 PHP 开发中,将 PHP 数组转换成 JSON 格式是相当普遍的操作,因为 PHP 数组可以很方便地处理大量数据,而 JS...
    99+
    2023-05-14
  • 聊聊如何使用php将时间转为时间戳
    在PHP编程中,时间戳(timestamp)是十分常用的概念。而将时间转换为时间戳,则是一件相对简单的操作。本篇文章将为您介绍如何使用PHP将时间转化为时间戳。一、什么是时间戳?时间戳指的是距离“1970年1月1日 00:00:00”(格林...
    99+
    2023-05-14
  • 聊聊php怎么将字符串强制转为整数
    在PHP中,经常会需要将字符串转换为整数。当你接收到用户的输入或从数据库中获取数据时,它们通常是以字符串的形式出现的。在处理这些数据时,我们有时需要将它们转换为整数。本篇文章将介绍PHP将字符串强制转换为整数的方法。方法1:使用intval...
    99+
    2023-05-14
    php 类型转换
  • 怎么用Node转换Excel成JSON
    这篇“怎么用Node转换Excel成JSON”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用Node转换Excel成JS...
    99+
    2023-07-04
  • 聊聊Node中怎么用async函数
    借助于新版 V8 引擎,Node 从 7.6 开始支持 async 函数特性。今年 10 月 31 日,Node.js 8 也开始成为新的长期支持版本,因此你完全可以放心大胆地在你的代码中使用 async 函数了。在这边文章里,我会简要地介...
    99+
    2023-05-14
    async node
  • 聊聊怎么用node写入读取文件内容
    以上就是聊聊怎么用node写入读取文件内容的详细内容,更多请关注编程网其它相关文章!...
    99+
    2023-05-14
    nodejs​ node
  • 聊聊为什么要使用BufferedReader读取File
    目录使用BufferedReader读取FileFileReader有三个用于read的函数使用BufferedReader读取File的代码举例使用BufferedReader循环...
    99+
    2024-04-02
  • 聊聊php怎么将年月日时分秒转成时间戳
    PHP是一种广泛使用的脚本语言,它选用了Unix时间戳作为时间表现方式,这是表示自1970年1月1日起经过的秒数。当我们需要把指定的年月日时分秒转换成时间戳的时候,我们可以通过PHP内置函数完成。第一步是使用PHP内置的date()函数来获...
    99+
    2023-05-14
  • 聊聊为什么Vue 3要使用setup()函数
    在Vue 2中,我们通常会使用选项式API来创建组件,即通过声明生命周期函数、数据、事件等来实现组件的功能。但是,Vue 3提供了一种新的API方式,称为函数式API,其中最关键的部分是setup()函数。setup()函数是Vue 3中的...
    99+
    2023-05-14
  • 聊聊PHP中怎么将提交表单方式从POST改为GET
    随着互联网的日益发展,表单的使用已经成为网络开发的必备技能。在开发过程中,表单提交方式的选择非常重要,而在使用表单过程中,GET和POST两种表单提交方式使用最为广泛。但是,在某些特定的使用场景下,我们需要改变默认的表单提交方式,从而实现一...
    99+
    2023-05-14
  • 聊聊ChatGPT是啥?PHP怎么使用ChatGPT?
    本篇文章给大家带来了关于php的相关知识,其中主要介绍了ChatGPT是什么?php怎么使用ChatGPT?下面一起来看一下,希望对大家有帮助。php 如何使用最近很火的ChatGPT呢AI聊天机器人ChatGPT火遍硅谷,引发了许多国内同...
    99+
    2023-05-14
    php ChatGPT 后端
  • 聊聊uniapp项目中怎么使用Axios
    Uniapp 是基于 Vue.js 的跨平台开发框架,可以同时构建 iOS、Android 和 Web 应用,而 Axios 是一款流行的基于 Promise 的 HTTP 库。虽然 Uniapp 可以使用 Vue.js 自带的 $http...
    99+
    2023-05-14
  • 聊聊golang怎么用递归实现反转链表
    在golang中,反转链表可以使用递归来实现。在递归函数中,我们首先需要将当前节点的下一个节点作为参数传入递归函数,然后让当前节点指向下一个节点的下一个节点。最后返回递归函数的返回值,即新的头节点。以下是使用递归实现反转链表的golang代...
    99+
    2023-05-14
  • Java怎么将Excel转为图片
    本文小编为大家详细介绍“Java怎么将Excel转为图片”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java怎么将Excel转为图片”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识...
    99+
    2024-04-02
  • 怎么使用PHP将数组转换为JSON格式
    这篇文章主要介绍“怎么使用PHP将数组转换为JSON格式”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用PHP将数组转换为JSON格式”文章能帮助大家解决问题。PHP是一种广泛使用的服务器端脚...
    99+
    2023-07-05
  • C#怎么实现将PDF转为Excel
    这篇文章主要介绍了C#怎么实现将PDF转为Excel的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#怎么实现将PDF转为Excel文章都会有所收获,下面我们一起来看看吧。通常,PDF格式的文档能支持的编辑功能...
    99+
    2023-06-29
  • Java怎么将Excel转为PDF格式
    本篇内容主要讲解“Java怎么将Excel转为PDF格式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java怎么将Excel转为PDF格式”吧!本文将介绍在程序中如何将Excel工作簿转为PD...
    99+
    2023-06-02
  • 使用库将 PHP 数组转换为 JSON
    php 数组可通过 json_encode() 直接转换为 json。此外,使用库(如 json-serialize)时:安装库实例化序列化器序列化数组输出 json 字符串这提供了附加...
    99+
    2024-04-30
    php json laravel composer
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作