【发布时间】:2012-06-14 14:45:48
【问题描述】:
我已经在 StackOverflow 上解决了有关此问题的其他问题,但那里提到的库只允许读取或写入。其中一些确实允许像 SuperCSV 一样进行部分读取或写入,但没有库可用于更新特定单元格的值。是否有其他可以使用的库或者我需要手动完成?
【问题讨论】:
-
你将如何识别那个单元格?有什么规律吗?
我已经在 StackOverflow 上解决了有关此问题的其他问题,但那里提到的库只允许读取或写入。其中一些确实允许像 SuperCSV 一样进行部分读取或写入,但没有库可用于更新特定单元格的值。是否有其他可以使用的库或者我需要手动完成?
【问题讨论】:
读取 CSV,修改所需的单元格,然后将其写回文件。
【讨论】:
不,无法直接更新 CSV 文件中的单元格。您可以逐行读取 CSV,然后逐列读取,更新单元格(内容)并写入新文件。
如果你知道模式(正则表达式),那么你可以使用 String.replace() 方法。
【讨论】:
构建函数中没有编辑 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();
}
}
【讨论】: