#これを書いた理由
Blue Prismで、ExcelデータをCollectionに取り込むVBOは、MS Excel VBOの「Get Worksheet as Collection」です。
でも、Excelの帳票で、同じ列名が何個もあるものは、そのままだとCollectionに取り込めません。
(なんで同じデータが何回も書いてあるのかとかちゃんとした帳票作れとかそういうお話はとりあえず棚上げしておくとして)
どうにかして重複列をないようにしないといけないのですが
今回は簡単に、2回目以降に出現する重複列名の列を削除してしまうものを作成しました。
これの記事の、「カラム名の重複を削除したいとき」と同じような働きをするものです。
【Python3】pandas.DataFrameのカラム重複削除(Qiita)
たとえばこういうExcelデータを入れます。赤で囲った列が重複(削除したい列)です。
-
1行目をヘッダにせず、データとしてデータテーブルに読み込みます。
「Get Worksheet as Collection」ではなくて「Get Worksheet as Collection Offset」を使い、Use HeaderをFalseにします。
こうすることで、1行目を列名でなくて普通のデータの1行目としてCollectionに取り込みます。
列名は「Column1]「Column2」……という具合にBlue Prismが自動でつけてくれます。
読まれたらこんな感じ
-
これで取りこんだデータの1行目だけをコピーして、別のCollectionに入れます。1行だけのCollectionになります。
-
VBOの「Collection Manipulation」の中に「Transpose Collection」というのがあって、
これはいわゆる「行列の転置」かと思いきや全然違って、Collectionを2列にしてくれる(1列目が列名で2列目がデータ)だけのものです。
これを使って、2で作成した1行だけのCollectionを、2列のCollectionに変換します。
-
Value(列名になるところ)を並べ替えます。同じ名前のものに隣接してもらうためです。下図の青枠です。
-
7で示した図の青枠に、削除すべき列の列名があるので、これを使って1で示したデータの列を削除します。
重複列が削除されたデータこれ
#終わりです
Transpose Collectionってなんの役にたつんだろう……てかこれをこの仕様で作ることにしたの誰……
くらいに思ってたんですが、今回初めて使いました。
昔コボラーだったのでこんなダサいやりかたなんですが、今のもっといいやりかたがあったら教えてください。ありがとうございます。
テストデータはここで作成しました。→ 疑似個人情報生成