Share
Embed
Transcript
40 slides
-
自己紹介 • 小﨑 肇(こざき はじめ⇒[ハナ]肇⇒はなっち!) • 59歳 もうすぐ… • 東京都豊島区⇒神奈川県川崎市中原区
• 趣味 自転車だったけど、最近はINGRESS • 職歴 かなり前に今の会社に入社。 COBOL⇒JAVA⇒EXCEL-VBA EXCEL-VBAでは、JP1-REPORTERとか、 SAGENT-REPORTERとか… UiPath歴は、21ヶ月… Presented By [email protected] -
• 内製化を進めるお客様先でロボット開発サポート中 • その中で、EXCEL上のセルをコピーして、 Webにペーストして...ってとこまで作成して、 そこから先どうしたら?と言う相談を受ける。 ⇒そこはDataTableだろうと思ってサポートする • 初心者向け社内教育は受講している。 ⇒変数とか、エレメントの概念は多少分かっている
• 社内教育では、DataTableに関しては単語だけ登場 • ITリテラシの高い方は、何とか独学している模様 プログラミング未経験者に DataTable型を教える -
自動販売機で考えてみよう 自動販売機とは、ボタンを押すと、商品が出てくる機械 でも、売価以上のお金をいれないと、商品が出てこない 150 お金を溜める所に 50円 100円をいれてみる ⇒ 足りないので商品が出てこない もう100円をいれてみる
⇒ 足りたので商品が出てくる! • 100円+100円=200円と言う事が、自 動販売機には分かる! • 200円から150円の商品を買って、 お釣りが50円と言うのも分かる! -
自動販売機で考えてみよう 自動販売機とは、ボタンを押すと、商品が出てくる機械 でも、売価以上のお金をいれないと、商品が出てこない 150 お金を溜める所に 50円 100円をいれてみる ⇒ 足りないので商品が出てこない もう100円をいれてみる
⇒ 足りたので商品が出てくる! • 100円+100円=200円と言う事が、自 動販売機には分かる! • 200円から150円の商品を買って、 お釣りが50円と言うのも分かる! 情報をためておく場所、名前を変数 -
DataTableって DataTableとは、データベースのように表形式で格納されているデータの事です。 列を指定し、行毎にデータを指定して行く事で、テーブルのようにデータを格納します。 引用元:私が考えた(^^♪ DataTableとは、EXCELのシートのようにセルの横集合体として格納されているデータの事です。 行毎に、列位置を指定する事で、セルを指定し、EXCELシートのようにデータを格納しています。 データを格納 容れ物の型を「DataTable型」、 容れ物の名前を「変数」と言う。 DataTable型
「変数」 Int32型 「変数」 Int64型 「変数」 String型 「変数」 〔参考〕 -
DataTable型って DataTable型のデータを参照/設定は、 ① データテーブルの ② (ある)行の ③ (ある)列 の順である。 ②
③ 例:B4セル相当位置 DataTable.Rows(3).Item(1) ←※2 ↑※1 Or ↓※1 DataTable.Rows(3).Item("Column1") ※1 行の先頭は0から始まる ※2 最左端列は0から始まる -
DataTable型…EXCEL編…どのように使う EXCELアプリケーションスコープの中に、「範囲を読み込み」アクティビティを配する フィルタの使用 ▪オートフィルタ掛かっているデータだけ □オートフィルタ掛かっていても、全データ ヘッダーの追加 ▪一行目をヘッダー情報とする □一行目をヘッダー情報とせず、 UiPathに任せる 表示形式を維持(値が1,234だったら)
▪1,234として格納 □1234として格納 対象とするシート名 対象とする範囲指定 “” :UiPath自動判断 “A1” :A1セルを基準に獲得 その他 :指定セルを基準に獲得 格納されるDataTable型の変数(DT) 他のアクティビティの入力へ -
DataTable型…EXCEL編…どのように使う 「繰り返し (各行)」アクティビティで、全行を対象にする 繰り返し(各行) データテーブル:DT 現在のインデックス:ix(int32) ix.ToString & "," &
row.Item(1).ToString & "," & row.Item("Column1").ToString 例:B列が空白かどうか知りたい -
DataTable型…EXCEL編…どのように使う DataTable型って、どんなデータになっている? 行情報があるか? DT.Rows.Count.Equals(0) 繰り返し(コレクションの各要素) コレクション値:DT.Columns 現在のインデックス:ix(int32) 行が0件である ix.ToString &
"," & item.ToString 行が0件でない ix.ToString & "," & item.ToString & "(" & DT.Rows(0).Item(item.ToString).ToString & ")" 左からの順番,列名(1行目のデータ) 参考(列の情報の一覧) -
DataTable型…どのように使う? EXCEL系アクティビティ DataTable型の容れ物をメモリに確保 列名、属性を指定して、列確保 DataRow型の行の容れ物をメモリに確保 行の容れ物にデータを代入 DataTable型の容れ物に、DataRow型の行の容れ物を追加 DataTable型の容れ物から必要なデータをフィルタする 同じレイアウトのDataTable型をマージする DataTable型の容れ物を並び替える
「範囲を読み込み」アクティビティ 「範囲を書き込み」アクティビティ 他のDataTableと結合する DataTable型の容れ物を出力する ※列の属性はObject型 -
DataTable型…どのように使う? DataTable型の容れ物から必要なデータをフィルタする ②実在する列 名 Or 列番号 ④フィルタ する値 ①条件合致 データを保持/
削除 ⑤指定した列 を保持/削除 ⑥実在する列名 Or 列番号 入力データテーブル 出力データテーブル 入力データ テーブルを指 定しても可 • 数値とか日付とかでもフィルタ掛けられるが、全 行を対象に形式変換をする必要がある • フィルター行を設定しなければ、列レイアウト変 更として使える ③条件指定 -
DataTable型…どのように使う? 同じレイアウトのDataTable型をマージする ソースデータテーブル 保存先データテーブル 一致した列名にマージする • レイアウトは保存先に従う • Addの場合、保存先にない列は列追加される •
Ignoreの場合、保存先にない列は無視される • Errorの場合、 DataExceptionにて異常終了する • AddWithKeyの場合、Addと同様だが、主キー情報も追加する ⇒普通はキー情報は存在しないので、Addと同意と捉える -
DataTable型…どのように使う? DataTable型の容れ物を並び替える ソースデータテーブル 保存先データテーブル 並び替える列は一つだけ。複数キーは指定できない(後述) • インデッスクの場合、最左端を0として指定する ⇒1 など •
列の場合、DataColumnを指定する ⇒DT.Columns(1) など • 名前の場合、列名を指定する ⇒“Column1”、DT.Columns(1).ColumnName など • 存在しない列を指定した場合は異常終了する -
DataTable型…どのように使う? 他のDataTableと結合する ソースデータテーブル 保存先データテーブル 突合させる列は複数指定可能 • 処理結果は、入力データテーブル1の右側に入力データテーブル2の 情報が展開される。列名が重複する場合は、「◦◦_1」のように後 置される •
結合型Innerの場合は、双方キー一致したもの • 結合型Leftの場合は、入力データテーブル1の全行と、キー一致し た入力データテーブル2の行が展開される • 結合型Fullの場合は、Leftに加えて、キー一致しなかった入力デー タテーブル2の行も展開される Col1 ColA キー1 V1 キー2 V2 Col1 ColB キー2 Y2 キー3 Y3 Col1 ColA Col1_1 ColB キー1 V1 キー2 V2 キー2 Y2 キー3 Y3 × = Inner Left Full ②実在する列 名 Or 列番号 ④実在する列 名 Or 列番号 ①結合 型 ③条件指 定 ※条件指定[=]は、VLOOKUPワークシート関数で検索方法に[完全一致(FALSE)]を指定したようなもの -
DataTable型…こんな時どうする? 先頭行の列名”A”とC列目のデータが欲しい .NET データテーブル.Rows(0).Item("Column1") データテーブル.Rows(0).Item(2) で取得可能 最終行の”A”とC列目のデータが欲しい データテーブル.Rows(データテーブル.Rows.Count - 1).Item("Column1")
データテーブル.Rows(データテーブル.Rows.Count - 1).Item(2) で取得可能 ※データテーブル上では、行の先頭は0であるため ※データテーブル上では、行の先頭は0であるため、最終行は件数から1を減じたものとなるため