Blue PrismでExcelを操作する<詳細版⑦> Excelで使うFile Management、Collection Manipulationのアレコレ
- この記事は、コーディング(プログラミング)の話題を含みます。
- 苦手な方はブラウザバックをお薦めします。
- あ、でも .NET のプログラミング経験がなくても、読めないことはない、そのくらいの難度です。
Utility - File Management: Read All Text From File の文字化け
BPA Object - Utility - File Management は、わりと見ため通りに動きます。
素直な感じで、見よう見まねで使っていけます。
そんな File Management の注意点は、やっぱりというか、文字コードです。
例えば、以下でも使ったアクション: Read All Text From File ですが、ファイルの中身がUTF-8 以外の文字コードだと文字化けします。
例えば、入力ファイルを Shift JIS で保存して
Read All Text From File で取り込むと、以下のとおり。
ブェー(断末魔)。
Read All Text From File の文字化け対策
そもそも、ファイルの文字コードをUTF-8に変えて、すべて保存しなおす…これ自体を自動化することも可能です。
夜中にスケジュール入れて、寝ている間にやっといてもらいますか。
ただ、そうもいかない場合は、Read All Text From File を複製して、新しいアクションを作ってしまうのも手だと思います。
Read All Text From File の中身は、
…StreamReader(File_Name)…
という形でストリームからファイルを読み込んでいるので、文字化けしちゃうわけです。
たとえば、以下のようにコードを変えれば、
…StreamReader(File_Name, System.Text.Encoding.GetEncoding("shift_jis"))…
ファイルの中身が Shift JIS でも、文字化けせずに読み取ることができます。
Collection Manipulation の Filter Collection
Collection Manipulation については、これまで何度も記事で言及してきました。
アクションによっては大変、個性的ですが、素直に扱えるアクションもあります。
Sort Collection とか。
これは列を選んで昇順/降順にソートできます。
エッ…と思ったのが、Filter Collection かな。
Filter Collection
コレクションをフィルター(特定のセルの値で絞込)します。
Filter Collectionの入力
- Collection In: 入力されるコレクション
- Filter: フィルターするためのクエリ…クエリ?
Filter Collectionの出力
- Collection Out: フィルター結果のコレクション
クエリ…クエリって何?
天下り的な説明で恐縮ですが、結論から言うと、以下のように設定すると動作します。
"コレクションの列名 = 'フィルターしたい値'"
複数の値でフィルターしたければ、例えば以下のような感じです。
"列名1 = 'フィルターしたい値A' OR 列名2 = 'フィルターしたい値B'"
…こうなる理由は、結局、Filter Collection の中が、
…Collection_In.Select(Select_Condition)…
となっているからですね。
Collection_In というのは System.Data.DataTable で、DataTable の Select メソッドを使っています。
Microsoftの公式ドキュメントだと、以下のように説明されています。
Select メソッドの引数である Filter Expression の説明は以下の通り。
DataView RowFilter Syntax [C#]
ANDとかORだけでなく、INとかも使えるわけですね。
この辺りの説明は、特に Collection Manipulation の中にはないように思います。
いや別にソース読めばいいじゃん的なスタンスを、Collection Manipulation からビンビン感じるんだよなぁ。
まぁ確かに、VBOの中身なんて、そもそも大したプログラムじゃないし、.NET のプログラミングをやったことがない私でもソースをギリギリ読めるレベルではある。
ただ、ちょっと個性的なアクションについては、多少の補足説明があった方が良いんじゃないかなぁ。
※ 個人の感想です
Collection Manipulation の Transpose Collection
Transpose Collection という名前から、コレクションが転置できるのでは?
…と思うじゃん?
違います。
何かもう疲れてきたので、詳細は省きますが、Transpose Collection は横ベクトル(一行のコレクション)を、縦2列のコレクションにすることしかできません。
入力が縦ベクトルとか、コレクションの場合は、転置できません。
まとめ
- Blue Prism で Excel を扱う場合、File Management や Collection Manipulation のお世話になることがある
- File Management は文字化けに注意
- Collection Manipulation は個性的なので、いろいろ注意
- .NET のプログラミング経験がなくても、Blue Prism のVBOのコードは読めないこともない
私が社会人になった頃は、プログラマーというのは単価が安く、したがって賃金も安く、割の良い仕事ではないという風潮でした。
プログラマーの人は、早くステップアップしてSEとかPMとかコンサルになれ、みたいなキャリアパスが、世間に広まっていたような気がします。まぁ、別にそういうパスでも良いんですけど。。何かプログラミングが軽く扱われているような。。
しかし、
- 海外(特に米国?)ではプログラマーは専門職であり、給与水準も高い
- クラウドやCI/CD技術の進化によりプログラマが活躍しやすくなった(はず)
- AI人気の高まり
により、日本でもプログラマに脚光があたってきた…んですかね?
小学校でプログラム教育が必修になるようですし。
一般の業務ユーザーでも、Blue Prism の標準VBOのコードを見て、自分好みにちょっと改修するような時代が来るのかなぁ。
(もう来てるのか?)