<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
目前想使用Cocos Creator
做一個文字遊戲,類似於我的人生重開模擬器。
那麼其中最重要的一點就是關於資料的儲存了。在我的人生重開模擬器中大部分事件和天賦的資料是儲存在excel
表格當中的,當然如果要使用Cocos Creator
,因為我不準備佈置伺服器,所以需要將資料提前轉換成JSON
檔案,那麼可以建立一個專案,使用node讀取excel
檔案,並通過格式轉換,將資料轉換成JSON
。
這裡網上有一些node呼叫excel
的庫,我使用了node-xlsx
,此庫底層基於強大的 SheetJS 構建,對 xlsx 檔案的格式相容性足夠好。
npm地址:node-xlsx - npm (npmjs.com)
在此之前我已經新建了一個天賦表格talentTable.xlsx
,裡面已經新增了許多天賦,並且有不同的屬性加成
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`) } }
然後建立一個讀取檔案方法,這裡需要用到fs
中的readFileSync
// 讀取資料表方法 const readFileData = (tableName)=>{ let fname = dataPaths[tableName].xlsx const xlsxData = xlsx.parse(fs.readFileSync(fname)); ...... }
這裡讀取到的xlsxData
是一個陣列物件,陣列中的元素代表的其實是一張張sheet表格,xlsx表格中並不是只有一個表格,所以才會是陣列物件,不過我需要的只是第一張表格。
所以獲取xlsxData[0].data
的資料即可,data的資料是按照行排列的陣列物件
然後到轉換成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; }
這樣返回的物件就如下了
接下來就可以將資料開始寫入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}寫入成功`); }); }
這樣需要的遊戲固定事件和天賦資料json就可以出現了。
對於JSON資料儲存為excel
物件也比較容易,需要用到xlsx.build
方法,這裡就不做過多的介紹了,可以去參考npm
地址上的使用方法。
到此這篇關於利用Node轉換Excel成JSON的文章就介紹到這了,更多相關Node轉換Excel成JSON內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45