DataTableとは
DataTableとは、Excelの表やWebの表、CSVデータなど表(テーブル)形式のデータのことを言います。ExcelをやCSVファイルを読み込んで、データを転記したりなど業務を自動化する際にはよく使いますので、覚えておくと便利です。
DataTableの使い方
DataTableの使い方について以下の3つについて説明したいと思います。
- DataTable作成方法
- Excel,CSVから読み込み
- 特定のデータ抽出
DataTable作成方法
まず、UiPathでDataTableを作成する方法を説明したいと思います。
以下の表のDataTableを作成してみましょう。
名前 | 値段 |
---|---|
りんご | 100 |
みかん | 80 |
ばなな | 120 |
UiPathのMain画面でシーケンスを配置して、変数一覧でdt_fruit
という変数を作成します。変数の型は型の参照
から「型の名前」入力欄にDataTable
と入力し、System.Data.DataTable
型を選択してください。

変数の作成が完了したら、データテーブルの構築
を配置します。
アクティビティ検索欄に「データテーブルの構築」と」入力するかプログラミング
-> データテーブル
-> データテーブルの構築
から配置してください。
配置が完了したら、データテーブル...
と表記されているボタンをクリックします。

クリックすると、データテーブルを構築という画面が表示されます。
ここで、先ほどの表と同じになるようにデータテーブルの設定を行います。
まず、列を変更しましょう。
列名の枠の右下にペンマークがあるので、そこをクリックすると列の編集を行えます。

最初に名前を入力する列を編集します。Column1
のペンマークをクリックしてください。
列の名前を「名前」に変更してください。
データ型は文字列を入力するため、初期値のStringで大丈夫です。

次に値段を入力する列を編集します。Column2
のペンマークをクリックしてください。
列の名前を「値段」に変更してください。
こちらもデータ型は数値を入力するため、初期値のInt32で大丈夫です。

後は先ほどの表と同じになるようにデータを入力してください。
入力していくと、行は自動で追加されます。

行の追加ボタンはありませんが 3行目については2行目まで入力していくと自動で新しく行を追加してくれます。
削除したい場合は左側の×ボタンをクリックしてください。
入力が完了したら、OKをクリックしてください。
データテーブルの構築
を選択している状態で、右側のプロパティ欄の「出力」に先ほど作成した変数のdt_fruit
を入力します。

これでデータテーブルの作成は完了です。
正しく作成されているか確認してみましょう。
DataTable型は1行を書き込み
で中身を出力することが出来ないためデータテーブルを出力
を使用します。
アクティビティ検索欄に「データテーブルを出力」と入力するかプログラミング
-> データテーブル
-> データテーブルを出力
から配置してください。
配置が完了したら、右側のプロパティ欄で「入力」にdt_fruit
と入力し、「出力」に Ctrl + K を押してfruitdata
と入力して変数を新規作成してください。

これでDataTable型のdt_fruit
の中身がString型のfruitdata
に変換されます。fruitdata
はString型なので1行を書き込み
で出力が可能です。
1行を書き込み
を配置して、fruitdata
を入力してください。
お気に入りから配置するかプログラミング
-> デバッグ
-> 1行を書き込み
から配置してください。

それでは、実行してみましょう。

表と同じように全て出力されているのが確認できたら終了です。
Excel,CSVから読み込み
次はExcel,CSVから読み込みDataTableを作成する方法について説明します。
最初はExcelから読み込む方法について説明します。
Excelから読み込み
まずはExcelファイルを作成します。
Excelを立ち上げて表と同じように入力をしてください。入力が完了したらファイル名をfruit.xlsx
で保存してください。

保存が完了したら、閉じてください。
先ほど使用したデータテーブルの構築
を削除し、Excelアプリケーションスコープ
を配置します。
アクティビティ検索欄に「Excelアプリケーションスコープ」と入力するかアプリの統合
-> Excel
-> Excelアプリケーションスコープ
から配置してください。
アプリの統合は 最新のComunity Edtionではアプリの連携になっています。
Versiton: Studio 2019.12.0-beta.61 – 2019/12/16 Community License
配置が完了したら、...
をクリックし、作成したfruit.xlsx
ファイルを選択してください。

ファイルを選択したら実行
内に範囲を読み込み
を配置します。
アクティビティ検索欄に「範囲を読み込み」と入力するかアプリの統合
-> Excel
-> 範囲を読み込み
から配置してください。
配置が完了したら、右側のプロパティ欄の「出力」にdt_fruit
を入力してください。
今回は、デフォルトのままで特に設定することはありませんが、プロパティの「入力」に実際に読み込むファイルのシート名と範囲を入力してください。範囲は表の先頭のセルを指定してください(今回であれば”A1″)

これでExcelの読み込みが出来ました。
それでは、実行してみましょう。

先ほどと同じように表示されました。
次はCSVから読み込む方法について説明します。
CSVから読み込み
まず、先ほど出力画面から名前,値段の行を選択し Ctrl + C を押すか右クリックし、コピーをしてください。

次にデスクトップ画面で右クリックをし、新規作成
-> テキストドキュメント
を選択し、ファイル名をfruit.csv
で作成してください。
作成したら、ファイルを右クリックし、プロフラムから開く
-> メモ帳
を選択してください。
メモ帳の画面が表示されたら先ほどコピーした出力値を貼り付けてください。

入力が完了したら、上書き保存をして閉じてください。
先ほど使用したExcelアプリケーションスコープ
を削除し、を削除し、CSVを読み込む
を配置します。
アクティビティ検索欄に「CSVを読み込む」と入力するかアプリの統合
-> CSV
-> CSVを読み込み
から配置してください。
配置が完了したら、右下の...
をクリックし、作成したfruit.csv
ファイルを選択してください。
ファイルを選択したら、右側のプロパティ欄の「エンコーディング」に"shift-jis"
と入力し、「出力」にdt_fruit
を入力してください。

最新のComunity Edtionでは以下のようになっています。
Version: Studio 2019.12.0-beta.61 – 2019/12/16 Community License

これで、CSVの読み込みが出来ました。
それでは実行してみましょう。

先ほどと同じように表示されました。
プロパティ欄の「エンコーディング」の設定が読み込むファイルの文字コードと違うと出力値が文字化けしてしまいます。
“shift-jis”で文字化けしてしまう場合は、未記入で実行してみてください。
これでExcel,CSVから読み込みは終了します。
特定のデータ抽出
DataTableで特定のデータを抽出する方法について以下を説明します。
- 特定の列を抽出する
- 条件と一致するデータ抽出
まずは、特定の列を抽出する方法について説明します。
特定の列を抽出する方法
特定の列を抽出する際には、繰り返し(各行)
を使用します。繰り返し(各行)
をシーケンス内の一番最後に配置してください。
アクティビティ検索欄に「繰り返し(各行)」と入力するかプログラミング
-> データテーブル
-> 繰り返し(各行)
から配置してください。
配置が完了したら、「コレクション」にdt_fruit
と入力します。

次にBody内に1行を書き込み
を配置して、row.Item("名前").ToString
と入力します。

row.Item("名前").ToString
については以下を参考にしてください。
()内の数値はインデックス値 | Item(“名前”) or Item(0) | Item(“値段”) or Item(1) |
---|---|---|
row(0) | りんご | 100 |
row(1) | みかん | 80 |
row(2) | ばなな | 120 |
繰り返し(各行)
ではrow(0)~row(2)までの処理を繰り返しています。
DataTableでは行をrow、列をItemで指定をします。
Itemは列名とインデックス値の両方で指定をすることが可能です。
インデックス値は0からスタートします。
それでは実行してみましょう。

最後の3行は名前の列だけを取得できています。row.Item(0).ToString
でも同じ値を取得できます。
このように特定の列のデータを抽出する際には、繰り返し(各行)
を使用して、row.Item()
で列を指定して抽出します。
条件と一致するデータ抽出
ExcelなどでA列の値が~以上のものを抽出するなど条件と一致するデータを抽出することは業務上多いと思います。ここではそういった条件と一致するデータの抽出でSelect文を使用した方法について説明します。
今回は値段が100以上のデータを抽出したいと思います。
先ほど、配置した繰り返し(各行)
はここでは使用しないため削除してください。削除をしたらシーケンス内の最後に代入
を配置してください。
デフォルトではお気に入り
にあるので、そこから配置してください。お気に入り
にない方は、ワークフロー
-> 制御
-> 代入
から配置してください。
配置が完了したら、代入
の右側にdt_fruit.Select("値段 >= 100")
と入力します。

左側には Ctrl + K を押して、select_rows
と入力し、新しく変数を作成します。

変数一覧から、select_rows
-> 変数の型
-> Array of<T>
-> 型の参照
で「DataRow」と入力してSystem.Data.DataRow
を選択してください。

次に代入
の下に繰り返し (コレクションの各要素)
を配置してください。
アクティテビィ検索欄に「繰り返し (コレクションの各要素)」と入力するかワークフロー
-> コントロール
-> 繰り返し (コレクションの各要素)
から配置してください。
配置が完了したら、「コレクション」に先ほど作成したselect_rows
を入力してください。

最後に本体内に、1行を書き込み
を配置し、item("名前").ToString + "," + item("値段").ToString
と入力してください。

item(0).ToString + “,” + item(1).ToStringでも同じ結果になります。
それでは実行してみましょう。

“値段 >= 100″の条件に合うデータを抽出できました。
Select文を使用してデータを抽出する際は、配列(Array of)のDataRow型に格納することで値を取得することが出来ます。
最後に
DataTableはUiPathを使う際には、必ずと言っていいほど使用する機会が多いです。DataTableの操作で便利な機能などは今後詳しく説明したいと思います。
今回でUiPathデータ操作編は終了します。次回からはレコーディング機能編になります。
コメント