ExcelAndJSONデータ書き出しツールマニュアル


ExcelAndJSON
by老G(qq 233424570)
Part0.に縁を付ける
Excelは、ゲーム開発で最もよく使われる数値編集ツールです.数式の塗りつぶし、数値曲線図など多くの使いやすい機能があります.Officeオフィスキットの一部として、使いやすさも抜群です.
JSONは、携帯ゲーム開発において、最も一般的なデータ交換フォーマットである.そのツリー構造は、データアクセスを非常に自然にします.また,この構造とスクリプト言語には天然の互換性(例えばPython,JavaScript)がある.
以上の理由から、携帯ゲームの開発過程では、多くの会社がExcelを使って数値を編集し、JSONを導出し、プログラムにロードする.ExcelからJSONにエクスポートするツールも数多く開発されています.
しかし、Excelは二次元テーブルに基づく構造であるため、最後にJSONとして導出された場合、JSONも二次元テーブルに類似した構造であり、これはJSONがツリー構造であるデータ交換フォーマットとしての表現力と使いやすさを深刻に制限している.その結果、開発中は、2 Dテーブルの表現が限られているため、現在のデータから1つのプライマリ・キーしか得られず、別のテーブルで検索したり、複数のテーブル間でジャンプしたりすることもあります.骨が折れる.
このほか、多くのツールでは、機能が単一で、プロセスが複雑で、構成が不便で、設計が合理的ではないなどの問題があります.
上記の問題を解決するために、このツールを開発してみました.市販されているほとんどのツールは「ExcelToJSON」と名付けられています.私の考えは、ExcelとJSONの長所を結びつけて、だから私のツールは:ExcelAndJSONと名付けます.
Part1.実行環境
  • xlsx形式のOffice
  • をサポート
  • Python 2.7
  • xlrd

  • Part2.特長
    使いやすい
  • クイックハンドスピード
  • の配置は簡単で、見たところ
  • が得られる.
    出力カスタマイズ可能
  • は、配列と辞書、折りたたみ、参照、オプションフィールドの出力
  • の様々な出力フォーマットのカスタマイズをサポートします.
    データ整合性
  • セルのデータはすべて出力され、空のデータをスキップすることは許されず、JSON構造の同一化
  • を保証する.
  • すべての属性値は、記入しない場合、デフォルト値はnullであり、bool判定エラー
  • を防止する.
  • でサポートされているフィールドタイプは多く、フィールドタイプパラメータを明確に書くことをお勧めします.現在のセルのデータに対応するフィールドタイプが入力されていない場合、プログラムは自動的に判断します.

  • フォーマット
  • データはデータフォーマットと同じsheet上に格納(プライマリテーブルモードを除く)、
  • の同期が容易である.
    Part3.いちじきのう
    初級機能は簡単な単機ゲーム、カジュアルな知的ゲームなど、複雑な数値があまり処理されていないゲームタイプに適しています.ハンドヘルドの速度が速く、十分なサポートも提供されています.
    シングルテーブルモード
    名前の通り、単一テーブルモードはworkbookファイルが1つしかないモードです.このモードでは、1つしか使用しません.xlsxファイル.すべてのsheetはこのファイルにあります.
    単一テーブル・モードのコマンドです.たとえば、次のようになります.
    python excel_and_json.py singlebook -o ./  -i single.xlsx

    コマンドの説明:
  • singlebook:単一テーブルモード
  • をオン
  • -o:出力ディレクトリ
  • -i:入力.xlsx

  • 表頭
    ヘッダーはsheetの様々なフォーマットとコンテンツ情報を決定します
    __default__
    __folding__
    __type__
    s
    i
    i
    i
    i
    __name__
    name
    hp
    mp
    atk
    def
    ヘッダーの一番左には、行がどのようなパラメータタイプであるかを示す規則的なタグがあります.
  • __type__:必須タグで、行がフィールドタイプ
  • であることを示す.
  • __name__:必須タグで、行がフィールド名
  • であることを示す.
  • __default__:行がデフォルト値
  • であることを示すオプションタグ
  • __folding__:行が折りたたみ属性であることを示すオプションタグである、詳細には
  • が高度な機能で説明する.
    フィールドタイプ
    フィールドタイプは必須タグです.ExcelAndJSONでは、次のフィールドタイプがサポートされています.
  • s:文字列
  • i:整数
  • f:小数
  • b:ブール
  • as:文字列配列
  • ai:整数配列
  • af:小数配列
  • d:辞書、辞書で数値文字列を値として使用したい場合は、数値の両端に「」
  • を付けてください.
  • r:参照、別のsheetの内容を参照でき、高度な機能では
  • を詳細に説明する.
    デフォルト値
    デフォルトはオプションタグです.このセルが空白の場合、プログラムは自動的にそのセルにデフォルト値を入力します.
  • ブール判定の正確性とテーブル構造の完全性を保証するために、デフォルトのデフォルト値はnull
  • です.
  • はデフォルト値をカスタマイズできますが、セルと同様にデータ型の正確性を保証する必要があります.
    データ領域
    ヘッダーの下にあるのが、データエリアです.データ領域の大きさはプログラムが自分で判断するので、プログラムがデータ領域のセルの位置を正確に判断することを保証するために、データ領域の下の行と最も右側の列に空白を残してください.データ領域外のセルでは、プログラムは読み込まれず、自由に編集できます.
    null
    nullは予約語で、セルにnullをプレースホルダとして直接記入できます.プログラムは最終的にnullをJSON構造に出力します.
    フィールドタイプ自動判定
    現在のセルのデータに対応するフィールドタイプが入力されていない場合、プログラムは自動的に判断します.いくつかのタイプの自動判断のみをサポートします:i,f,s.
    Part4.高度な機能
    高度な機能は複雑な大中型ゲームに適しており、多くの数値が処理されています.学習コストは一定ですが、それに応じてより強力な機能を提供します.
    参照
    リファレンスは、rの値を持つフィールドタイプです.参照では、1つのsheetに別のsheetの行を挿入できます.
    __type__
    r
    __name__
    lv1award
    zhangsan
    lvAward.lv1
    参照属性のセルにはlvAwardと記入します.lv1.このフォーマットは、所定のフォーマット「テーブル名.レコード名」です.プログラムは、「lvAward」という名前のsheetで、「lv 1」という名前のレコードを検索し、そのレコードを属性値として現在のsheetに挿入します.
    各sheet間のループ参照は許可されていません.単一テーブルモードでは、参照されたテーブルも出力されません.
    折りたたみ
    折りたたみはオプションのフィールド属性です.この機能では、1枚のsheetのフィールドを繰り返し折りたたむことで、最後に折りたたんだ対応するセルに埋め込まれるJSONになります.
    JSON形式の特徴によって、私たちは2種類の折りたたみ方式があります.
  • を{}で折りたたむ:折りたたむと、辞書
  • が生成されます.
  • []で折りたたむ:折りたたむと、配列
  • が生成されます.
    折りたたむたびに、データだけが折りたたまれるわけではありません.対応するフィールドタイプ、フィールド名、さらには折りたたみプロパティ自体が折りたたまれます.フィールドのプロパティを折りたたむときは、左側のカッコの後に折りたたんだフィールド名が続く必要があります.折り畳まれたフィールドタイプはdです.
    折りたたみ自体の意味は抽象的すぎるかもしれませんが、本質は非常に簡単です.次に、折りたたみ処理の全体を示します.
    元のテーブル
    __folding__
    {a{b
    }
    {c
    }}
    __type__
    s
    i
    i
    i
    s
    b
    __name__
    name
    hp
    atk
    def
    description
    leader
    1回目の折りたたみ
    __folding__
    {a
    {c
    }}
    __type__
    d
    i
    s
    b
    __name__
    b
    def
    description
    leader
    2回目の折りたたみ
    __folding__
    {a
    }
    __type__
    d
    i
    d
    __name__
    b
    def
    c
    3回目の折りたたみ
    __folding__
    __type__
    d
    __name__
    a
    折りたたみ後のJSON構造は以下の通りである.
        "a":{        "b":{            "name":"x x x",            "hp":111,            "atk":222        },        "def":333,        "c":{            "description":"x x x",            "leader":false        }    }

    参照と折りたたみの関係
    特に、プログラムは、データ出力を行う場合に使用します.各sheetを個別に処理すると、折りたたみ操作がトリガーされます.次にsheetに参照がある場合は、対応するデータを挿入します.したがって、参照挿入されたデータは折り畳まれてはいけない.
    プライマリ・テーブル・モード
    名前の通り、プライマリテーブルモードは独立したプライマリワークブックファイルが存在する.xlsx内部には、出力のための構成情報がいくつか格納されています.プライマリ・テーブルworkbookでは、大量のデータworkbookを読み取り、ロードできます.対応するカスタマイズ情報に従ってsheetの出力を行います.
    プライマリ・テーブル・モードのコマンドです.たとえば、次のようになります.
    python excel_and_json.py mainbook -o ./  -i main.xlsx

    コマンドの説明:
  • mainbook:マスターテーブルモード
  • をオン
  • -o:出力ディレクトリ
  • -i:入力.xlsx

  • 入力ワークブック__workbook__を使用してタグを付け、直後に使用するworkbook名.
    __workbook__
    workbook1
    workbook2
    出力されたsheet__workbook__タグの下には、各行が出力sheetである.各行の先頭にsheetの名前が表示されます.
    sheet1
    aaa
    skill1
    skill2
    skill3
    option
    lv1
    lv2
    sheet2
    name
    atk
    def
    hp
    sheet3
    lv1
    lv2
    lv3
    sheet4
    sheet4->sheet5
  • 出力のフィールドを選択:フィールドの選択出力が必要な場合は、sheet名の後に出力するフィールド名を接続できます.書かないと、sheetのすべてのフィールドが出力されます.
  • 表改名:出力時に表の名前を変更することをサポートし、1つの表を複数に分解するのに便利です.テーブルの古い名前と新しい名前の間に、->で接続します.

  • GitHubソース倉庫アドレス:
    https://github.com/gdgoldlion/ExcelAndJSON