2014-04-19 2 views
0

Я хотел знать, есть ли способ, которым я могу читать CSV-файл, кроме первой строки (заголовка) и первого столбца каждой строки? Я решил, что если я пропущу 0-й элемент массива nextLine [], я могу пропустить первый столбец каждой строки, но кто-нибудь может помочь мне пропустить первую строку, содержащую заголовки, мне нужно получить только данные , а не заголовки. Ниже мой код:Чтение CSV за исключением первой строки через CSVReader

if (CSValreadyExists) 
    { 
     try { 
      reader = new CSVReader(new FileReader(csvfile)); 
     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     String [] nextLine; 
     try { 
      while ((nextLine = reader.readNext()) != null) { 
       // nextLine[] is an array of values from the line 
       //System.out.println(nextLine[0] + nextLine[1] + "etc..."); 

       scalesFromCSV.add(nextLine[0]); // Factor 
       scalesFromCSV.add(nextLine[1]); // Scale 
       scalesFromCSV.add(nextLine[2]); // Scale 
       scalesFromCSV.add(nextLine[4]); // Scale 
       scalesFromCSV.add(nextLine[5]); // Scale 
       scalesFromCSV.add(nextLine[6]); // Scale 

       Toast.makeText(this, nextLine[1] + "-" + nextLine[2] 
         + "-" + nextLine[3] + "-" + nextLine[4] + "-" + nextLine[5] 
           + "-" + nextLine[6], Toast.LENGTH_LONG).show(); 
      } 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

ответ

0

Например:

if (CSValreadyExists) 
    { 
     try { 
      reader = new CSVReader(new FileReader(csvfile)); 
     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     String [] nextLine; 
     try { 
      boolean headersConsumed = false; // helper flag 
      while ((nextLine = reader.readNext()) != null) { 
       // nextLine[] is an array of values from the line 
       //System.out.println(nextLine[0] + nextLine[1] + "etc..."); 

       if(!headersConsumed){ // if headers not consumed 
        headersConsumed = true; 
        continue; // skip line with headers 
       } 

       scalesFromCSV.add(nextLine[0]); // Factor 
       scalesFromCSV.add(nextLine[1]); // Scale 
       scalesFromCSV.add(nextLine[2]); // Scale 
       scalesFromCSV.add(nextLine[4]); // Scale 
       scalesFromCSV.add(nextLine[5]); // Scale 
       scalesFromCSV.add(nextLine[6]); // Scale 

       Toast.makeText(this, nextLine[1] + "-" + nextLine[2] 
         + "-" + nextLine[3] + "-" + nextLine[4] + "-" + nextLine[5] 
           + "-" + nextLine[6], Toast.LENGTH_LONG).show(); 
      } 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
+0

Отлично, спасибо, это сработало :) – user2387107

0

Вам не нужно написать пользовательскую логику для пропуска заголовка, вы можете использовать соответствующий конструктор. Последний аргумент - skipLines, а по умолчанию - 0 (CSVReader.DEFAULT_SKIP_LINES), поэтому он читает заголовок.

new CSVReader(new FileReader(pathToData), CSVParser.DEFAULT_SEPARATOR, CSVParser.DEFAULT_QUOTE_CHARACTER, 1); 
Смежные вопросы