You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.4 KiB
53 lines
1.4 KiB
const xlsx=require('xlsx')
|
|
const fs=require('fs')
|
|
|
|
const handle={
|
|
topSpeed:value=>Number(Number(value).toFixed(1)),
|
|
acceleration:value=>Number(Number(value).toFixed(2)),
|
|
handling:value=>Number(Number(value).toFixed(2)),
|
|
nitro:value=>Number(Number(value).toFixed(2)),
|
|
nitroDuration:value=>Number(Number(value).toFixed(2)),
|
|
car_id:value=>''+value
|
|
}
|
|
|
|
const copy=obj=>JSON.parse(JSON.stringify(obj))
|
|
|
|
const useHandle=(obj,handle)=>{
|
|
let res=copy(obj)
|
|
Object.keys(handle).forEach(key=>{
|
|
if(res[key]){
|
|
res[key]=handle[key](res[key])
|
|
}
|
|
|
|
})
|
|
return res
|
|
}
|
|
|
|
const exportJsonLines=(xlsxFilePath,sheetName)=>{
|
|
const table=xlsx.readFile(xlsxFilePath)
|
|
const dataPath=`dist\\${xlsxFilePath}.${sheetName}.line.json`
|
|
const dataJson=xlsx.utils.sheet_to_json(table.Sheets[sheetName])
|
|
// console.log(table.Sheets[sheetName]["!merges"])
|
|
const dataLines=dataJson
|
|
.map(obj=>useHandle(obj,handle))
|
|
.map(dataItem=>JSON.stringify(dataItem)).join('\n')
|
|
const dataBuffer=Buffer.from(dataLines)
|
|
|
|
fs.writeFileSync(dataPath,dataBuffer)
|
|
}
|
|
|
|
//运行命令 node exportJsonLines 文件名 表名,即可导出文件
|
|
|
|
// node ./exportJsonLines.js ./狂野飙车9生涯数据-地图.xlsx forJson
|
|
|
|
const [,,xlsxFilePath,sheetName]=process.argv
|
|
|
|
try{
|
|
|
|
if(xlsxFilePath&&sheetName){
|
|
exportJsonLines(xlsxFilePath,sheetName)
|
|
console.log('执行成功')
|
|
}
|
|
}catch(e){
|
|
console.log(e)
|
|
} |