通过CSVReader读取第一行以外的CSV

时间:2014-04-19 08:51:10

标签: csv

我想知道除了第一行(标题)和每行的第一列之外,是否有任何方法可以读取CSV文件?我想如果我跳过数组nextLine []的第0个元素,我可以跳过每一行的第一列,但任何人都可以帮助我如何跳过包含标题的第一行,我只需要检索数据而不是标题。以下是我的代码:

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();
        }
    }

2 个答案:

答案 0 :(得分: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();
        }
    }

答案 1 :(得分:0)

您不需要编写用于跳过标题的自定义逻辑,您可以使用相应的构造函数。最后一个参数是skipLines,默认值为零(CSVReader.DEFAULT_SKIP_LINES),因此它会读取标题。

new CSVReader(new FileReader(pathToData), CSVParser.DEFAULT_SEPARATOR, CSVParser.DEFAULT_QUOTE_CHARACTER, 1);