4

I have a CSV file which looks like this: http://gyazo.com/5dcfb8eca4e133cbeac87f514099e320.png

I need to figure out how I can read specific cells and update them in the file.

This is the code I am using:

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

    }

}

In this code I am just trying to change A1 to "lol" as an example test to see if it works but I get the following error:

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

How should I go about achieving my goal and fixing the error?

CSV File: www.forumalliance.net/townhall_levels.csv

4
  • 1
    Post your csv file as text, not as a link to an image. We need to see what is actually in the file. You should also learn to debug by yourself: print each array of the body, or use your debugger to see what it contains. Commented Jun 2, 2015 at 16:23
  • @JBNizet posted CSV file Commented Jun 2, 2015 at 16:29
  • The file content itself should be in the question. Not as a URL. Commented Jun 2, 2015 at 16:40
  • @JBNizet doesn't format properly. Commented Jun 2, 2015 at 17:02

2 Answers 2

1

You're using ;as the separator to parse the file. Your file uses ,. Also, using a space as the quote char doesn't make much sense. You should use " instead, since that's also what your file uses.

Sign up to request clarification or add additional context in comments.

Comments

0

The first values you're passing to row and col are 1 and 1. However, these need to start at 0.

2 Comments

thanks, that doesn't seem to have worked entirely though: gyazo.com/a7aedf1112615d5c951c0acb5aae7480
You should debug your code to see that you're actually getting values that you expect. If you're not comfortable using a debugger (which I would recommend), even some System.out.println() statements will help you see what the problem might be

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.