はじめに
この投稿は、RPAツールのUiPathで、表(DataTable)の縦横を変換する方法についての投稿です。
この記事は、UiPath Friends もくもく会 2021年5月開催 2021-05-22(土)08:45 - 12:00
で書きました。
表(DataTable)の縦横変換とは
表で、横軸に時系列などが設定されている時に、縦横を変換したくなります。
例えば、以下のようなケースです。
UiPathで表を扱うときは、DataTable形式で取得して使用しますが、基本は行でループさせながら処理するほうが普通なので、上記の表の場合は、縦と横を入れ替えてから処理するのもありです。
UiPathで縦横変換する
UiPathで表(DataTable)の縦横を変換するなら、以下の方法が考えられます。
1)UiPathの標準アクティビティで変換する
2)UiPathの「コードを呼び出し (Invoke Code)アクティビティ」で変換する
3)Excel操作の「形式を選択して貼り付け」で「行列を入れ替える」
以下で説明します。
1)標準アクティビティで変換する
1列目の名前はkeyという名前にしていますが、変えてもOKです。
確認しやすいように、以下にxaml形式でアップしました。
2)コードを呼び出し (Invoke Code)アクティビティで変換する
.NETのコードでも、縦横変換が可能です。
以下は、コードを呼び出し (Invoke Code)アクティビティで、VB.NETのコードで書いた例です。
'// in_dt:変換前のデータテーブル
'// out_dt:変換後のデータテーブル
out_dt = New DataTable()
out_dt.Columns.Add("key")
For idx As Integer = 0 To in_dt.Rows.Count - 1
out_dt.Columns.Add(in_dt.Rows(idx)(0).ToString)
Next
For idx As Integer = 1 To in_dt.Columns.Count - 1
Dim drow As DataRow = out_dt.NewRow()
Dim colName As String = in_dt.Columns(idx).ColumnName
drow(0) = in_dt.Columns(idx).ColumnName
For idxRow As Integer = 0 To in_dt.Rows.Count -1
drow(idxRow + 1) = in_dt.Rows(idxRow)(colName)
Next
out_dt.Rows.Add(drow)
Next
確認しやすいように、以下にxaml形式でアップしました。
3)Excel画面操作で「行列を入れ替える」
Excel単体でも「表の縦横変換」ができます。
UiPathのフローにするなら以下のようになります。
終わりに
いかがでしたでしょうか。扱いにくい表の場合は、思い切って縦横変換してみるのもありです。
この記事が参考になったら、 LGTMをお願いします。閲覧ありがとうございました。