Есть ли способ изменить значение конкретной ячейки в CSV-файл в Java?

Я рассмотрел другие вопросы, касающиеся этого, в Stackru, но упомянутые там библиотеки позволяют только читать или писать. Некоторые из них допускают частичное чтение или запись, как SuperCSV, но никакая библиотека не может быть использована для обновления значения конкретной ячейки. Есть ли какая-то другая библиотека, которую можно использовать, или мне нужно сделать это вручную?

3 ответа

Нет, напрямую обновить ячейку в файле CSV невозможно. Вы можете читать CSV построчно, а затем столбец за столбцом, обновлять ячейку (содержимое) и записывать в новый файл.

И если вы знаете шаблон (регулярное выражение), то вы можете использовать метод String.replace().

Прочитайте в CSV, измените нужную ячейку, затем запишите ее обратно в файл.

В сборке нет функции для редактирования CSV-файла. Вот один из подходов к редактированию файла CSV.

пакет maven.selenium;

      import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import au.com.bytecode.opencsv.CSVReader;
import au.com.bytecode.opencsv.CSVWriter;
import jxl.read.biff.BiffException;
import jxl.read.biff.File;

public class App {
    public static void main(String[] args) throws BiffException, IOException {

        String csv = "C:/Users/shubham.mahajan/Desktop/data.csv";

        CSVReader reader = new CSVReader(new FileReader(csv), ',');
        List<String[]> csvBody = reader.readAll();
        String[] First_Row = csvBody.get(0);
        CSVWriter writer = new CSVWriter(new FileWriter(csv), ',');
        writer.writeNext(First_Row);
        for (int k = 0; k < First_Row.length; k++) {

            if (First_Row[k].equals("value")) {

                for (int j = 1; j < csvBody.size(); j++) {
                    String[] Temp = csvBody.get(j);

                    Temp[k] = "replacing value";

                    writer.writeNext(Temp);
                }
            }
        }
        reader.close();
        writer.flush();
        writer.close();
    }
}
Другие вопросы по тегам