「ヘッダーのカラムが不足しているCSV」とは、つまるところヘッダーより多くの列を含む行が存在するCSVです。
例として以下のCSVでは、ヘッダーにあたる1行目が3つの列(A,B,C)なのに対し、3行目は4つの列(4,5,6,7)を含んでいます。
このようなCSVを「CSVを読み込み」アクティビティで読み込んだ場合、インプット.csv の CSV ファイル形式は無効です。行 x は、ヘッダー行よりも値を多く含んでいます
と実行エラーになります。また、このエラーは「先頭行をヘッダーとする」プロパティのオンオフに関わらず発生します。
「CSVを修正する」というのが真っ当なアプローチではありますが、時と場合によってはこのようなCSVを読み込まざるを得ない場合もあるでしょう。その際に使える方法を紹介します。
1.ExcelでCSVを保存し直してから読み込む
CSVを一度Excelで開いて保存すると、自動的に不足分のカラムが保管され、空白のカラム名が足されます。
これを利用したのが、一度Excelで開いて保存してからCSVを読み込む以下のワークフローです。「CSVを読み込み」の前にExcelプロセススコープを配置し、開いて保存という動作だけを行わせます。
実行結果です。
以下のように正常に読み込むことができました。なお、空白のカラム名に対しては"Column + 数字"という名前が連番で割り振られていきます。
2.テキストで読み込みデータテーブルに変換する
こちらは「CSVを読み込み」を使わずに読み込むパターンです。
CSVをテキストデータとして読み込み、「テキストからデータテーブルを生成」でデータテーブルに変換します。
注意点として、「テキストからデータテーブルを生成」のプロパティは以下のように設定してください。
- 「列ヘッダーを使用」と「CSV解析」をオンに変更
- 「CSVを読み込み」と同様に全列をString型としたい場合は、「型を自動検出」をオフに変更
実行結果です。
こちらもCSVを一度Excelで開いて保存した場合と同様に、正常に読み込むことができました。
動作環境
UiPath.System.Activities 24.10.3