すくまりのメモ帳すくまりのメモ帳
← 記事一覧に戻る

【Unity】UnityでExcel データを読み込む方法「Excel Importer Maker」

【Unity】UnityでExcel データを読み込む方法「Excel Importer Maker」

はじめに

この記事では「Unity Excel Importer Maker」を利用したExcelデータの読み込み方を紹介します。

はじめに

C# では「StreamWriter」や「WriteLine」といった

Excelに入出力する用のクラスがあります。

しかし、セルを指定して使用したり、

一部のセルのみ上書きしたいときなどの処理が意外に難しく、

いまいち上手くいきませんでした。

そこで、いろいろ調べてみたところ、

ツイッターで活動している椿さん(@tsubaki_t1)が公開している

「Unity Excel Importer Maker」が便利だったので紹介します。

Unity Excel Importer Maker のダウンロード

1、GitHubより「Unity Excel Importer Maker」をダウンロード

以下のリンクを開き、右にある「Clone or download」をクリック。

https://github.com/tsubaki/Unity-Excel-Importer-Maker

「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 データの取得

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()
    {
        
    }
 
}
//実行結果
 
numberの1行目:1
 
nameの1行目:a
 
numberの1行目:2
 

まず、「using System; 」「using System.IO;」を追加してください。

using System;
using System.IO;

次に、「Entity_Sheet1 es; 」でEntity_Sheet1を取得。

 Entity_Sheet1 es;

ResourcesフォルダからTestData.assetファイルを読み込み。

es = Resources.Load("TestData") as Entity_Sheet1;

sheets[0]で一枚目のシートを指定し、

list[0]で2行目のデータを選択し、

numberでnumberの列のデータを取得します。

 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);

忙しい人のためのUnity入門講座へ戻る