はじめに
次の構文により、UiPathでデータテーブルの特定列を配列に変換することができます。
dt.AsEnumerable().Select(Function(row) row("ColumnName").ToString).ToArray()
'// 設定項目 //
'dt:変換するデータテーブル
'ColumnName:配列に変換するデータテーブルの列名
本記事では、この構文を利用して、ExcelのリストからUiPathの入力ダイアログのプルダウンを作成する方法を紹介します。
使用するExcelのリスト
例として、季節一覧のExcelファイルを用意します。
UiPathのシナリオ
①Excelファイルの読み込み
季節一覧のExcelファイルの内容をデータテーブルに読み込みます。
②入力ダイアログ
入力ダイアログの「入力オプションの配列」に以下のコードを入力します。
この処理で、データテーブルをString型の配列に変換して、季節一覧のリストを入力ダイアログに設定しています。
dt季節一覧.AsEnumerable().Select(Function(row) row("季節").ToString).ToArray()
'dt.AsEnumerable().Select(Function(row) row("ColumnName").ToString).ToArray()
'// 設定項目 //
'dt:変換するデータテーブル
'row:匿名関数の引数名。任意の名称を付けることができます。
'ColumnName:配列に変換するデータテーブルの列名
'// 構文説明 //
'AsEnumerable()
' データテーブルをDataRowオブジェクトのコレクションに変換します。
' 変換前の型:System.Data.DataTable
' 変換後の型:System.Data.EnumerableRowCollection[System.Data.DataRow]
'Select(Function(row) row("ColumnName").ToString)
' 匿名関数(ラムダ式)を使用して、
' DataRowオブジェクトコレクション(の指定した列の値)を
' String型のコレクションに変換します。
'
' 変換前の型:System.Data.EnumerableRowCollection[System.Data.DataRow]
' 変換後の型:System.Data.EnumerableRowCollection[System.String]
'
' 詳細
' DataRowオブジェクトコレクションの各値に
' Select()の中に記載した匿名関数の処理が行われます。
'
' (1) 匿名関数の引数「row」にDataRowオブジェクトを格納
' (2) 匿名関数の引数「row」に格納したDataRowオブジェクトから指定列の値を取得
' (3) 指定列の値をObject型からString型に変換
'ToArray()
' String型のコレクションをString型の配列に変換します。
' 変換前の型:System.Data.EnumerableRowCollection[System.String]
' 変換後の型:System.String[]
実行結果
シナリオを実行すると、季節一覧のExcelファイルの内容がプルダウンに表示されます。
終わりに
以上、Excelのリストから入力ダイアログのプルダウンを作成する方法の解説でした。
地味な内容なのですが、UiPathの入力ダイアログの選択肢を変更する場合、Excelの設定ファイルでリスト管理すると便利なため、業務ではこの方法をとても重宝しています。
皆さんの業務にお役立ていただければ幸いです。