读取CSV中与行和列相对应的特定数据



我需要一些帮助。我想实现一个代码,其中我希望从csv文件中读取数据。

示例CSV文件(details.CSV(:

id、姓名、年龄

1,制动马力,23

2,nit,24

我想在java中创建这样一个方法来读取这个CSV,我将sheetname、columnname和rowname作为参数传递。只要存在此组合的匹配,就会拾取相应的数据。

示例:-我想传递详细信息.csv,名称&1.我应该得到bh的输出。

你能帮我做这个吗?

我尝试了以下代码,但它返回空值:-

public static String searchCsvLine(String filename, String searchString, String rowname) throws IOException {
String resultRow = null;
BufferedReader br = new BufferedReader(new FileReader(filename));
String line;
while ( (line = br.readLine()) != null ) {
String[] values = line.split(",");
if(values.equals(searchString)) {
resultRow = line;
break;
}
}
br.close();
return resultRow;
}

您应该解析csv文件的第一行以获取列名。

public class Test {
public static String searchCsvLine(String filename, String columnName, String rowName) throws IOException {
String resultRow = null;
BufferedReader br = new BufferedReader(new FileReader(filename));
// parse first line as column names
String line = br.readLine();
String[] columns = line.split(",");
int columnIndex = -1;
for (int i = 0; i < columns.length; i++) {
if (columnName.equals(columns[i])) {
columnIndex = i;
break;
}
}
// read lines to match row
while ((line = br.readLine()) != null) {
String[] values = line.split(",");
if (rowName.equals(values[0])) {
// return value at columnIndex
resultRow = values[columnIndex];
break;
}
}
br.close();
return resultRow;
}
public static void main(String[] args) throws IOException {
String name = searchCsvLine("details.cvs", "name", "1");
System.out.println("name is " + name);
}
}

请尝试以下操作:

public static String searchCsvLine(String filename, String searchString,String rowname) throws IOException {
String resultRow = null;
BufferedReader br = new BufferedReader(new FileReader(filename));
String line;
int searchStringIndex=0;
while ((line = br.readLine()) != null) {
String[] values = line.split(",");
//get index of searchString
for (int i = 0; i < values.length; i++) {
if(values[i].equalsIgnoreCase(searchString)){
searchStringIndex=i;
break;
}
}
//get required rowname  
for (int i = 0; i < Integer.parseInt(rowname); i++) {
line=br.readLine();
}
//split the line found by rowname and get value as per searchString index (given column)    
values = line.split(",");
resultRow=values[searchStringIndex];
break;
}
br.close();
System.out.println(resultRow);
return resultRow;
}
}

相关内容

最新更新