23

这是我目前使用的线路

File booleanTopicFile;
// booleanTopicFile is csv file uploaded from form
CSVReader csvReader = new CSVReader(new InputStreamReader(new FileInputStream(booleanTopicFile), "UTF-8"));

想要跳过包含标题的 csv 的第一行。我不想使用任何分隔符,除了默认构造函数中已经可用的默认逗号(,)。在参数化构造函数中,有一个选项可以跳过 no。行数,但如何处理构造函数的第二个和第三个参数。

CSVReader csvReader = new CSVReader(new InputStreamReader(Reader reader, char c, char c1, int index);

- 谢谢

4

6 回答 6

34

CSVReader 类的构造函数将在读取文件时跳过 csv 的第一行。

CSVReader reader = new CSVReader(new FileReader(file), ',', '\'', 1);
于 2013-02-01T08:45:03.353 回答
25

至少从 3.8 版开始,您可以使用CSVReaderBuilder并将其设置为跳过第一行。

例子:

CSVReader reader = new CSVReaderBuilder(inputStreamReader)
                .withFieldAsNull(CSVReaderNullFieldIndicator.EMPTY_SEPARATORS)
                // Skip the header
                .withSkipLines(1)
                .build();
于 2016-11-25T11:35:15.147 回答
13

我发现这个问题和回答很有帮助,我想扩展Christophe Roussy 的评论。在最新的 opencsv(撰写本文时为 2.3)中,实际的代码行是:

new CSVReader( new StringReader(csvText), CSVParser.DEFAULT_SEPARATOR,
               CSVParser.DEFAULT_QUOTE_CHARACTER, 1);

请注意,它使用 CSVParser 而不是 CSVReader。

于 2014-01-14T14:32:49.870 回答
3

使用最新版本的 opencsv 版本 -

CSVReader csvReader = new CSVReaderBuilder(new FileReader("book.csv")).withSkipLines(1).build()

于 2019-09-02T11:24:31.393 回答
0
watFileCsvBeans = new CsvToBeanBuilder<ClassType>(isr)
  .withType(ClassType.class)
  .withIgnoreLeadingWhiteSpace(true)
  // CsvToBeanFilter with a custom allowLine implementation
  .withFilter(line -> !line[0].equals("skipme"))
  .build()
  .parse(); 

这对我来说很有用。相反,“withSkipLines”对我不起作用。opencsv 版本:5.5.2

于 2021-11-01T13:18:57.250 回答
-1

您还可以使用withFilter

watFileCsvBeans = new CsvToBeanBuilder<ClassType>(isr)
  .withType(ClassType.class)
  .withIgnoreLeadingWhiteSpace(true)
  // CsvToBeanFilter with a custom allowLine implementation
  .withFilter(line -> !line[0].equals("skipme"))
  .build()
  .parse();
于 2019-10-10T13:12:08.323 回答