Java OpenCSV如何从csv文件编辑特定单元格

时间:2015-06-02 16:18:18

标签: java opencsv

我有一个CSV文件,如下所示: http://gyazo.com/5dcfb8eca4e133cbeac87f514099e320.png

我需要弄清楚如何读取特定单元格并在文件中更新它们。

这是我正在使用的代码:

import java.util.List;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import com.opencsv.*;

public class ReadCSV {

    private static final char SEPARATOR = ';';

    public static void updateCSV(String input, String output, String  replace, int row, int col) throws IOException {   

          CSVReader reader = new CSVReader(new FileReader(input),SEPARATOR);
            List<String[]> csvBody = reader.readAll();
            csvBody.get(row)[col]=replace;
            reader.close();

            CSVWriter writer = new CSVWriter(new FileWriter(output),SEPARATOR,' ');
            writer.writeAll(csvBody);
            writer.flush();
            writer.close();
    }


    public static void main(String[] args) throws IOException {

        String source = "townhall_levels.csv";
        String destiantion="output.csv";
        ReadCSV.updateCSV(source, destiantion, "lol", 1, 1);

    }

}

在这段代码中,我只想将A1改为&#34; lol&#34;作为一个示例测试,看它是否有效,但我收到以下错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
    at ReadCSV.updateCSV(ReadCSV.java:16)
    at ReadCSV.main(ReadCSV.java:30)

我应该如何实现目标并修复错误?

CSV文件:www.forumalliance.net/townhall_levels.csv

2 个答案:

答案 0 :(得分:0)

您传递给row和col的第一个值是1和1.但是,这些值需要从0开始。

答案 1 :(得分:0)

您正在使用;作为解析文件的分隔符。您的文件使用,。此外,使用空格作为引用字母并没有多大意义。您应该使用",因为这也是您的文件使用的内容。