好的,我有一个csv文件:
Summary
heading1,heading2,heading3
value1,value2,value2
value1,value2,value2
value1,value2,value2
value1,value2,value2
Detail
heading11,heading12,heading13
value1,value2,value2
value1,value2,value2
value1,value2,value2
value1,value2,value2
我正在使用com.opencsv.CSVReader库。
我需要从“详细信息”行中读取内容,但是我不知道它是哪一行,因为在它之前可能存在未定义的行数。摘要始于
第13行,但我知道该如何处理。
opencsv是否有一种简单的模式来查找“详细信息”行并从此处开始? 还是我需要以某种方式计数Detail之前的行并将其作为参数传递给OPENCSV?
答案 0 :(得分:1)
由于将CSV分为几部分不是普遍的要求,并且库不一定支持,因此您应该找到自己感兴趣的行的起点并提取它们。一种方法可能是:
BufferedReader b = new BufferedReader(new FileReader(source));
String line = b.readLine();
StringBuilder build = new StringBuilder();
while(line != null && !line.equals("Detail")){
line = b.readLine();
}
line = b.readLine();
while(line != null){
build.append(line);
build.append('\n');
line = b.readLine();
}
System.out.println(build.toString());
Reader toBeParsed = new StringReader(build.toString());
基本上会读取文件,直到找到与Detail部分匹配的行,然后将所有剩余的行添加到String中。从该字符串中使用一个阅读器,该阅读器可以输入到CSVReader中。
我假设必须考虑所有剩余的行(如果不是这种情况,请考虑与另一个字符串匹配以停止该行),并且开始的行正好是“ Detail”(您可以使用正则表达式更灵活的方法)