For each row ヘッダー設定

For each row にて先頭行をヘッダーとして設定するにはどのようにしたらよろしいでしょうか?

こんにちは。
まずは直接の回答ではないのですが、楽な解決策の模索という事で。

だいたいの場合、後からデータテーブルの列名を変更するのは結構面倒なので、
データテーブルを作成するときに先頭行をヘッダーにするように読み込んでやるのがいいと思います。
そのデータテーブルってどのように作成されているものでしょうか?

ネットからDLされたcsvをエクセルに取り込んだ感じです

なるほど。

であれば、
・「CSVを読み込む」アクティビティを使っている場合
→「列名を含める」にチェックを入れる
・ExcelアプリケーションスコープでそのCSVを開いて「範囲を読み込む」アクティビティを使っている場合
→「ヘッダーの追加」にチェックを入れる
で対応したほうが楽そうな気がしますが、どうでしょう。

重複するヘッダーがあるので読み込み時にヘッダー認識させるとどうしてもエラーコードが出るので、ヘッダー認識にチェックは入れてません

となると、For Each Row処理以前に、For EachでDataTableのDataColumneで列名を取得、設定していくしかないです。

List(Of String)型を利用して、重複している項目を洗い出し、重複しないように、"_n"を付けてあげるようにしてあげるとか、
任意列名で設定できるように、EXCELに列名情報を保有し、そのEXCELからの列名で、DataTable上の列名を変更してあげる。

変更後、「データ行の削除」アクティビティで0行を削除すればOKですね

2 Likes

こんにちは

重複するヘッダーがあるので読み込み時にヘッダー認識させるとどうしてもエラーコードが出るので、ヘッダー認識にチェックは入れてません

やり方はいろいろあると思いますが、CSVファイルからの読み込みとのことで
以下一例です。

1.テキストをファイルから読み込みアクティビティで、CSVファイル全体を文字列変数に読み込む
読み込んだ文字列を仮にdataとする。
(文字コード指定に注意。エンコード欄に"Shift_JIS"の指定が必要な場合あり)

2.置換アクティビティで一行目を書き換える。(ヘッダ情報があらかじめ分かっている場合)
例えば、パターン:"^.*\n" 、置換:"Col1,Col2,Col3"+vbCrLf
のようにして新しいヘッダ文字列で置き換える。

3.データテーブルを生成アクティビティで文字列をDataTableに変換する。
CSV解析:True、列ヘッダーを利用:ON、型を自動検出:OFF
入力:data 、出力:DataTable型変数

2 Likes

めちゃくちゃ難しそうですが頑張ってミマス

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.