Node を使用して Excel を JSON に変換するにはどうすればよいですか?次の記事では、Node で Excel を JSON に変換する方法を紹介します。
現在、Cocos Creator
を使用して、My Life Restart Simulator
のような単語ゲームを作成したいと考えています。
最も重要な点はデータ ストレージについてです。 My Life Restart Simulator
では、ほとんどのイベントおよびタレント データは excel
テーブルに保存されます。もちろん、Cocos Creator
を使用したい場合は、私はそうではないので、サーバーのデプロイを計画しているため、事前にデータを JSON
ファイルに変換する必要があります。その後、プロジェクトを作成し、node を使用して excel
ファイルを読み取り、データを JSON
に変換します。 [関連チュートリアルの推奨事項: nodejs ビデオ チュートリアル ]
ノードが excel
と呼び出すライブラリがインターネット上にいくつかあります。私は node-xlsx
を使用しました。 , このライブラリの最下層は強力な SheetJS 上に構築されており、xlsx ドキュメントに対して十分な形式互換性を備えています。
npm アドレス: node-xlsx - npm (npmjs.com)
この前に、 new タレント テーブル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
// 获取 __dirname 的 ESM 写法 const __dirname = path.dirname(fileURLToPath(import.meta.url)) // xlsx文件路径 const xlsxPath = path.resolve(__dirname, '../../assets/JsonData');
を介して xlsx フォルダーと json フォルダーの相対パスを見つけます。テーブルがたくさんあるので、テーブル パス オブジェクトを作成できます
// 事件, 玩家, 门派, 天赋, 武学 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
は配列オブジェクトです。配列内の要素は実際にはシートを表します。xlsx テーブルにはテーブルが 1 つだけあるわけではないので、配列オブジェクトです。しかし、必要なものは最初の形式だけです。
したがって、xlsxData[0].data
のデータを取得するだけです。data のデータは次のように配置されています。 to rows 配列オブジェクト
# を JSON 形式のデータに変換しますが、Attribute:Attribute value
の形式に変更する必要があるので、変換するメソッドを作成できます。最初の行のプロパティは 3 行目から始まるデータと結合されて、オブジェクトの配列が作成されます。
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; }
返されるオブジェクトは次のとおりです
これで、fs.writeFile
Method を使用して、json ファイルへのデータの書き込みを開始できます。 、形式 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}写入成功`); }); }
excel オブジェクトとして保存することも簡単です。
xlsx.build メソッドを使用する必要があります。ここではあまり詳しく説明しません。
npmアドレスの使い方をご紹介します。
nodejs チュートリアル を参照してください。
以上がNode を使用して Excel を JSON に変換する方法について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。