Excelの実行しているシートの最初の行はどこかで取れますか

52 views
Skip to first unread message

VOICE_NOVEL

unread,
Oct 18, 2023, 11:09:07 PM10/18/23
to 宴ユーザーグループ
いつもありがとうございます。

先日、教えていただいて、
Engine.Page.CurrentData.CommandListの中から、エクセルの実行行のデータをstring[]で取ることができました。

そこで、何列目、という列のインデックスを決め打ちで、取っているのですが、エクセルシートの行の最初にある、

Command
Arg1

Arg2

Arg3

Arg4

Arg5

Arg6

WaitType

などが書いてある「最初の行」を取る方法がないでしょうか。
そこから列のインデックスをきめたいです。

どうぞよろしくお願いいたします。

マッドネスラボ

unread,
Oct 19, 2023, 2:09:59 AM10/19/23
to 宴ユーザーグループ
各Commandの元データの主な取得方法は以下の通りになります。
基本的には、ParseCellかParseCellOptionalを使う形になります。
その内部で行っている先頭行の取得方法や、先頭行で定義している列名のインデックスの取得方法は次の通りです。

using UnityEngine;
using Utage;

namespace Sample
{
    public class SampleCommandData
    {
        public void GetCommandData(AdvCommand command)
        {
            //コマンドのID
            // AdvCommandParser.IdCharacterなど、AdvCommandParser.Idで始まる定数が定義されている
            var id = command.Id;
           
            //コマンドのエクセルデータ(1行のデータ)
            var row = command.RowData;
           
            //指定の列名のセルの文字列データを取得(内部で先頭行のインデックスを解析している)
            var cellString = row.ParseCell<string>("Arg1");
           
            //指定の列名がない場合も考慮した文字列データを取得
            var cellString1 = row.ParseCellOptional<string>("Arg1","");

            //エクセルの1シートのデータ
            var grid = row.Grid;

            //エクセルの先頭行のデータ
            var header = grid.HeaderRow;

            //指定の名前の行の列のインデックスを取得(内部で先頭行のインデックスを解析している)
            var columnIndex = grid.GetColumnIndex("Arg1");
            //そのセルの文字列を取得
            var cellStringByIndex = row.Strings[columnIndex];

            //指定の名前の行がない場合も考慮した列のインデックスを取得
            if (grid.TryGetColumnIndex("Arg1",out int columnIndex1))
            {
                //そのセルの文字列を取得
                var cellStringByIndex1 = row.Strings[columnIndex1];
            }
        }
    }
}

2023年10月19日木曜日 12:09:07 UTC+9 VOICE_NOVEL:
Reply all
Reply to author
Forward
0 new messages