はじめに
この記事では「Unity Excel Importer Maker」を利用したExcelデータの読み込み方を紹介します。
— YouTubeなら9分41秒で学べます ―
はじめに
C# では「StreamWriter」や「WriteLine」といった
Excelに入出力する用のクラスがあります。
しかし、セルを指定して使用したり、
一部のセルのみ上書きしたいときなどの処理が意外に難しく、
いまいち上手くいきませんでした。
そこで、いろいろ調べてみたところ、
ツイッターで活動している椿さん(@tsubaki_t1)が公開している
「Unity Excel Importer Maker」が便利だったので紹介します。
Unity Excel Importer Maker のダウンロード
1、GitHubより「Unity Excel Importer Maker」をダウンロード
以下のリンクを開き、右にある「Clone or download」をクリック。
「Download ZIP」より「Unity Excel Importer Maker」をダウンロードして解凍してください。
解凍すると「Unity-Excel-Importer-Maker-master」のフォルダが現れるので、
開いてAssets内にある「Terasurware」をプロジェクト内にドラッグ&ドロップしてください。
2、Excelデータの準備
今回使用するExcelのファイル名は「TestData.xls」です。
拡張子は「xls」にしてください。
もちろん、ファイル名自体は何でもいいです。
また、変数名は日本語を使用しないでください。
1行目の単語がそのまま変数名になります。
記入が終わりましたら、プロジェクトフォルダにドラッグ&ドロップしてください。
3、XLS Importer の使用
TestData.xlsを右クリックしてXLS Import Settings をクリックしてください。
すると、ExcelImporterウィンドウが現れるので以下を参考にして設定してください。
Class name
Excelをインポートする用のクラスを作成するので、そのスクリプト名です。
変更してもそのままでも構いません。
Sepalate sheets
Excel内に複数のシートがある場合、シートごとに読み込むかどうかの設定です。
今回はシートが1枚なのでチェックは外しました。
シート内の1行目のアルファベットは全シートで統一する必要があります。
Parameter settings
Excel シートの変数名は入力されていると思います。
右下のタブから型名を設定してください。
自動で型名が設定されているわけではないので、
ここは必ずチェックしてください。
「Create」すると、Terasurware/Classes内に「Entry_Sheet1.cs」、
Terasurware/Classes/Editor内に「TestData_importer.cs」が生成されます。
これらの名前は各自使用しているファイル名によって異なります。
4、Assetファイルの生成
Assset内のTestData.xlsをもう一度右クリックして「Reimport」すると、「TestData.asset」が生成されます。
TestData.assetを「Resources」フォルダへ移してください。
もし、Resourcesフォルダが無い場合は作成してください。
続いて、Terasurware/Classes/Editor内の「TestData_importer.cs」を開いてください。
TestData.assetファイルを移動させたので、
パスを変更していきます。
exportPath = “Assets/TestData.asset”;を
exportPath = “Assets/Resources/TestData.asset”; に変更してください。
5、Excel データの取得
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
using System.Collections; using System.Collections.Generic; using UnityEngine; using System; using System.IO; public class Test : MonoBehaviour { Entity_Sheet1 es; // Use this for initialization void Start() { es = Resources.Load("TestData") as Entity_Sheet1; Debug.Log("numberの1行目:" + es.sheets[0].list[0].number); Debug.Log("nameの1行目:" + es.sheets[0].list[0].name); Debug.Log("numberの2行目:" + es.sheets[0].list[1].number); } // Update is called once per frame void Update() { } } |
1 2 3 4 5 6 7 |
//実行結果 numberの1行目:1 nameの1行目:a numberの1行目:2 |
まず、「using System; 」「using System.IO;」を追加してください。
1 2 |
using System; using System.IO; |
次に、「Entity_Sheet1 es; 」でEntity_Sheet1を取得。
1 |
Entity_Sheet1 es; |
ResourcesフォルダからTestData.assetファイルを読み込み。
1 |
es = Resources.Load("TestData") as Entity_Sheet1; |
sheets[0]で一枚目のシートを指定し、
list[0]で2行目のデータを選択し、
numberでnumberの列のデータを取得します。
1 2 3 |
Debug.Log("numberの1行目:" + es.sheets[0].list[0].number); Debug.Log("nameの1行目:" + es.sheets[0].list[0].name); Debug.Log("numberの2行目:" + es.sheets[0].list[1].number); |