前言
相信很多人都遇到过游戏数据处理困难的问题
比如…当策划给了你一个很复杂的excel时
最常用的解决方案是将excel转换为json
这边给大家推荐一款excel转json工具
excel-convert是一个开源、可自定义解析的excel转换工具
它的优点在于可以对解析方式进行自定义
环境
NodeJS
开始使用
一.创建一个nodejs项目
npm i excel-convert -S
二.新建一个excel表格
然后填入这些数据,并保存到node项目的一级目录下
其中@
表示这个是一个正向的表格,$k
表示这一行为键,$t
表示这一行为数据的类型
工具内置以下常用数据类型
类型 | 示例 | 默认值 |
---|---|---|
number | 1 | 0 |
string | 123 | ‘’ |
boolean | true | false |
number[] | 1,2,3,4 | [ ] |
string[] | a,b,c,d | [ ] |
boolean[] | true,false,true | [ ] |
object | {“num”:1} | null |
数据类型的默认值都可以通过以下方法修改
setDefaultTypeValue(type, value)
具体的使用方式可以参考工具介绍GitHub - kaxifakl/excel-convert
三.转换数据
新建一个index.js
,填入以下代码,然后运行node index.js
let excelconvert = require('excel-convert');
let fs = require('fs');
let buffer = fs.readFileSync('test.xlsx');
let jsonData = excelconvert.convert(new Uint8Array(buffer), 'test.xlsx');
console.log(jsonData);
不出意外命令行中会打印出以下结果,其中Sheet1
为工作表的名字
{
Sheet1: [
{ id: 1, name: '张三' },
{ id: 2, name: '李四' },
{ id: 3, name: '王五' }
]
}
当一个excel中有多个工作表时,结果可能是这样的
{
Sheet1: [
{ id: 1, name: '张三' },
{ id: 2, name: '李四' },
{ id: 3, name: '王五' }
],
Sheet2: [
{ id: 1, name: '张三' },
{ id: 2, name: '李四' },
{ id: 3, name: '王五' }
],
...
}
四.数据结构转换
在导出json数据对象后,接下来的数据转变可完全自定义
工具中也提供了常用的将数组转为对象的方法
excelconvert.arrayToObject(jsonData.Sheet1, 'id')
// {
// '1': { id: 1, name: '张三' },
// '2': { id: 2, name: '李四' },
// '3': { id: 3, name: '王五' }
// }
五.自定义解析
当我们需要定制数据类型时,我们就需要用到自定义解析
比如我们需要一个数据包含年龄、性别的结构
{age:number,sex:string}
我们在表格中添加了新的数据类型info,它的第一个数据是年龄,第二个数据是性别
同时,我们需要在转换之前添加新的info这个数据类型的解析方式
let excelconvert = require('excel-convert');
let fs = require('fs');
//添加自定义数据类型解析
excelconvert.addCustomTypeParse("info", (data) => {
let args = data.split(','); //data 20,男
return { age: parseFloat(args[0]), sex: args[1] }
})
let buffer = fs.readFileSync('./test.xlsx');
let jsonData = excelconvert.convert(new Uint8Array(buffer), 'test.xlsx');
console.log(jsonData);
最后可以得到结果
{
"Sheet1": [
{
"id": 1,
"name": "张三",
"custom": {
"age": 20,
"sex": "男"
}
},
{
"id": 2,
"name": "李四",
"custom": {
"age": 21,
"sex": "男"
}
},
{
"id": 3,
"name": "王五",
"custom": {
"age": 24,
"sex": "女"
}
}
]
}
六.常用优化
1.将nodejs工程放于cocos工程下,通过nodejs和工具将excel转换为json或者ts文件,将文件直接指向到cocos项目assets下
2.使用ts文件可以有字段提示,使用json则需要加载一次json文件
3.制定统一的文件名、工作表名格式
4.关于数据加密,可以将json转换为进制文件,或对json字符串进行加密,成熟的工具有BJSON,Protobuf等
结语
最后祝大家能在新的一年里能够拥抱双休,远离加班!