这可能是非常简单的,但我还没有找到一个选项来做到这一点。我正在尝试使用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()。
每行用逗号分隔。
没有空单元格值
暂无答案!
目前还没有任何答案,快来回答吧!