スポンサーリンク

UiPathデータ操作編④ DataTableの使い方

前回 UiPathデータ操作編③ 出力データの加工方法

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を入力してください。
お気に入りから配置するかプログラミング -> デバッグ -> 行を書き込みから配置してください。

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

表と同じように全て出力されているのが確認できたら終了です。

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データ操作編は終了します。次回からはレコーディング機能編になります。

コメント