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

Java OpenCSV How to edit specific cells from csv file

我有一个如下所示的 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 更改为 "lol" 作为示例测试以查看它是否有效,但我收到以下错误:

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

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

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