java:使用inputstream和apachecommons csv而不使用行号

vnjpjtjt  于 2021-06-26  发布在  Java
关注(0)|答案(0)|浏览(165)

这可能是非常简单的,但我还没有找到一个选项来做到这一点。我正在尝试使用apachecommons 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"

编辑:此外,最终目标是验证以下内容:
这里有“雇员id”、“部门”和“电子邮件”列。为此,我想我需要删除.withheader()。
每行用逗号分隔。
没有空单元格值

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题