スポンサーリンク

UiPath Dictionaryを使ってDataTableをExcelのように扱う

ExcelCSVを読み込み、DataTable使いたい値をインデックスで指定する際に、いつもExcelの画面を見ながら「Aが0、Bが1、Cが2…」と数えながらインデックスを確認していました。
その時にExcelみたいに使いたい値を「H5」のようにセル位置で指定すればデータを取得できないかと考え、Dictionaryを使ってDataTableをExcelのように扱う方法を考えました。

CreateExcelTableについて

DataTableをDictionaryに変換し、Excelのように「A1」「B2」とセル位置を指定してデータを取り出すことが出来るようにしています。

メリット
  • 取得したい値をExcelのセル位置で指定することができるのでインデックス値の計算が不要
  • 変数名(”セル位置”)で値を取得できるため、入力が短くてすむ
デメリット
  • 繰り返し処理を行うときに、cnt, iなどのカウンター用の変数を用意して列 + cnt.ToStringと指定するため、めんどくさい。
  • DataTableをDictionaryに移しているので、データ量が膨大だと無駄に処理時間が増えてしまう
スポンサーリンク

CreateExcelTableのダウンロード

GitHubにxmalを公開しているのでこちらから「Clone or download」「Download ZIP」を選択してダウンロードして使用してください。

download.png

CreateExcelTableの使い方

ダウンロードが完了したら、任意のプロジェクトフォルダ内に「CreateExcelTable.xmal」ファイルを配置してください。
配置が完了したら、UiPathでプロジェクトを開いてください。

image.png

Main実行

「CreateExcelTable.xmal」をダブルクリックして、「デバッグ用」を選択し、Ctrl + Dを押してコメントアウトしてください。

commentout.png

「Main.xmal」で、ワークフローファイルを呼び出しを配置してください。
配置が完了したら、をクリックして、「CreateExcelTable.xmal」を選択して開くをクリックしてください。

call_workflow.png
image.png

ワークフローファイルを呼び出しの「引数をインポート」をクリックしてください。

argument_import.png

値の欄でCtrl + Kを押して、任意の名前で変数を作成してください。
プロジェクトファイルで実際に利用をする場合は、短い変数名を使用すると参照するときに楽だと思います。

image.png

et("B3")のように変数名("セル位置")で実際のデータを取得することができます。

image.png

“b3”のように小文字で入力すると、エラーになってしまうので注意してください。

デバッグ実行

「CreateExcelTable.xmal」をダブルクリックし、実行を押してください。
デバッグ用」をコメントアウトしている場合は、Ctrl + Eを押して、コメントアウトを解除してください。

「CreateExcelTable.xmal」をダブルクリックし、実行を押してください。

main.png

CreateExcelTableの実行手順

1.ファイル選択

実行すると以下のポップアップが表示されるので、OKをクリックします。

process1.png

ファイル選択画面で、ExcelファイルかCSVファイルを選択してください。

ExcelCSV以外のファイルには対応していないので、選択するとエラーになってしまいます。

process2.png

2.ヘッダー列作成選択

ヘッダー列を作成するか確認するポップアップが表示されます。
作成する場合は「はい」、しない場合は「いいえ」を選択してください。

process3.png

以下の画像のデータを読み込んだときの、ヘッダー列ありとなしの出力結果は下段に記載しているので、参照してください。

image.png

ヘッダー列あり

image.png

ヘッダー列なし

image.png

3.Excel選択時の設定

CSVファイルを選択した場合は、「2.ヘッダー列作成選択」で終了です。
Excelファイルを選択した場合は、以下のように「シート名」「範囲読み込み位置」がデフォルト設定で良いか確認するポップアップが表示されます。

process4.png

「いいえ」を選択した場合は以下のように入力ダイアログが表示されるので、「シート名」「範囲読み込み位置」を入力してください。

process5.png
process6.png

コメント