XlsToJson の基本的な使い方はこちらを参照してください。
本記事は、書きそびれたいくつかのテクニックを紹介しておきます。
目次
手修正した Json や Scriptable Object を、エクセルに逆出力したい
unity でパラメータを修正しながら動作を確認するようなツールを作成した場合、こういった逆出力が必要になるかもしれません。
Tools/XlsToJson/[Xlsx Update] JsonData(Scriptable Object) -> ????.xlsx
を実行することでテーブルをエクセルに書き出すことができます。
但し、enum やサブクラスは逆出力できません。これらを修正したい場合、必ずエクセルで行うようにしてください。
また、残念ながら const 設定値は素の値になってしまいます…こちらは仕様とさせてください。
シート(テーブル)によって出力形式(Json / ScriptableObject)を切り分けたい
簡単なのは出力形式によってエクセルファイルを分けることです。
それぞれのエクセルファイルで XlsToJson Settings... を使い、必要な出力形式のみにチェックを入れて作成します。

CREATE Importer したら自動生成されたコードでエラーになり、詰んだ
エクセルの記述ミスなどでコードにエラーが発生するかもしれません。
Editor/uindies/XlsToJson/importer 内のコードでエラーの場合は、一旦全部消してしまうのもアリですが、テーブルクラスやアクセッサクラスでこの状態になると、既にテーブルを使用したゲームクラスとの兼ね合いで泣く泣く手修正(不毛)することにも…。
既に出来上がっているテーブルクラスの更新は危険が伴うので、更新前にはバックアップしておきましょう。CREATE Importer で再作成する前に、Git にコミットしておく事をオススメします。
XlsToJson の不具合のようであれば、ご報告お願いします!
データをIDで検索する

XlsToJson ではオートナンバリングされた ID というフィールドが必要ですが、このフィールドを使って行を検索することができます。
アクセッサを使った例を示します。
var row = Character.FindRowByID(1); Debug.Log($"{row.CharacterName}"); // 結果は Jessie
ID 以外のフィールドを Find 対象にする
ID だけではなく、例えば CharacterName から行データを取得したい場合、CharacterName* とエクセルに記述してください。(アスタリスクをつける)

すると、クラスに FindRowByCharacterName というメソッドが新たに自動作成されます。
var row = Character.FindRowByCharacterName("Bob"); Debug.Log($"{row.CharacterNo}"); // 結果は 2
Find 対象にするフィールド内容は重複しないようにしてください。
重複している場合、その中で最初に見つかった1つしか検索することはできません。
条件により、複数のデータを抽出する

このようなデータで、「女性(Female)だけ」を抜き出したいケース。
残念ながら、XlsToJson だけでこれを満たすコードは自動生成されませんので、以下のように抽出クラス(CharacterEx.cs)を作成します。
using System.Collections.Generic; public partial class Character { public static List<Class_Character.Row> FindRowsBySex(Class_Character.Sex sex) { return Rows.FindAll( (row) => row.Sex == sex ); } }
ソース名は CharacterEx.cs ですが、クラスは Character であり、partial としてある点がミソです。
こうすることで、例えテーブルの形が変わり、後にアクセッサのコードを作り直したとしても、自前で作成したコードは残り、上書きされることはありません。
使い方も今までと同じ。
var list = Character.FindRowsBySex(Class_Character.Sex.Female); list.ForEach((row) => Debug.Log($"{row.ID} {row.CharacterName} {row.Sex}"));
