我有一个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开始