java - 读取与 CSV 中的行和列对应的特定数据
问题描述
我需要一些帮助。我想实现一个代码,我希望从 csv 文件中读取数据。
示例 CSV 文件 (details.csv):
身份证,姓名,年龄
1,bh,23
2,尼特,24
我想在 java 中创建这样一个方法来读取这个 CSV,我将 sheetname、columnname 和 rowname 作为参数传递。只要有这种组合的匹配,就会选择相应的数据。
示例:- 我想传递 details.csv、name 和 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;
}
解决方案
试试下面:
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;
}
}
推荐阅读
- c# - 在 Umbraco 7.7 中处理成员 api 时性能缓慢
- java - 强制包装在 Reactor Flux.using 中抛出的每个函数
- python-3.x - Pyinstaller 无法加载本机模块“Crypto.Cipher.__raw_ecb”
- excel - 如何在excel中查找日期时间是否小于24小时
- javascript - react-big-calendar:无法读取未定义的属性“0”
- cmake - Cmake:CMAKE_C_LINK_EXECUTABLE 变量并添加链接器选项
- mysql - mysql : 使 mysql db 对查询区分大小写
- uwp - DeviceWatcher 和 BluetoothLEAdvertisementWatcher 类和 Timeout 属性之间的区别
- powershell - PowerShell:根据特定列中值的长度删除一行
- excel - VB:加载类型库/DLL 时出错。(来自 HRESULT 的异常:0x80029C4A(TYPE_E_CANTLOADLIBRARY)