0

これはおそらく非常に単純ですが、これを行うオプションを見つけることができませんでした。Apache Commons CSV を使用して、後で検証するためにファイルを読み取ろうとしています。問題の CSV は入力ストリームとして送信されます。これは、ファイルを読み取るときに、行番号を含む追加の列をファイルに追加するようです。ヘッダー行に数字が含まれていないため、エラーが発生するため、可能であれば無視できるようにしたいと考えています。これを行うためのオプションが InputStream に既にありますか、それとも何らかの後処理をセットアップする必要がありますか?

私が使用しているコードは次のとおりです。

public String validateFile(InputStream filePath) throws Exception{
        System.out.println("Sending file to reader");
        System.out.println(filePath);
        InputStreamReader in = new InputStreamReader(filePath);
        //CSVFormat parse needs a reader object
        System.out.println("sending reader to CSV parse");
        for (CSVRecord record : CSVFormat.DEFAULT.withHeader().parse(in)) {
            for (String field : record) {
                System.out.print("\"" + field + "\", ");
            }
            System.out.println();
        }
        return null;
    }

を使用withHeader()すると、次のエラーが発生します。

java.lang.IllegalArgumentException: A header name is missing in [, Employee_ID, Department, Email]

ヘッダー行でいくつかの検証を行う必要があるため、単純にスキップすることはできません。

また、CSV ファイルの例を次に示します。

"Employee_ID", "Department", "Email"
"0123456","Department of Hello World","John.Doe@gmail.com"

編集:また、最終目標は以下を検証することです:

  1. 「Employee_ID」、「Department」、「Email」という列があること。このためには、.withHeader() を削除する必要があると思います。
  2. 各行はコンマで区切られています。
  3. 空のセルの値はありません
4

1 に答える 1