如何读取 excel 中的每一行并保存在地图中
how to read every rows in excel and save in map
我想读取 excel 文件中的每一行并保存在地图中。
我的输入文件看起来像这样,
ID| Name| details
1| xx| {
"user":"xx",
"email":"xxx@xxx.in"
}
2| yy| {
"user":"yy",
"email":"yyy@xxx.in"
}
我想根据提供的 ID 获取 excel 中的值。如果我传递 2 的值,它应该 return 对应于 id - 2 的名称和详细信息。
所以我尝试使用地图和键值作为 ID。
String fileToParse = "D:\InputData.xls";
BufferedReader fileReader = null;
String line = "";
fileReader = new BufferedReader(new FileReader(fileToParse));
line = fileReader.readLine();
Map<Long, String> dataMap = new HashMap<Long, String>();
while ((line = fileReader.readLine()) != null)
{
data dataTO = new data();
String[] s = line.split("|");
String value = s[1] + "," + s[2] + "," + s[3];
dataMap.put(Long.parseLong(s[0]), value);
}
long id = 2;
String val = dataMap.get(id);
String url = val.split(",")[0];
String input = val.split(",")[1];
我的数据 class 也会像这样 excel 文件中的值具有 getter 和 setter 方法,
public class data {
private int id;
private String name;
private String details;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDetails() {
return details;
}
public void setDetails(String details) {
this.details = details;
}
}
上面的代码对于普通字符串值工作正常,但如果我在详细信息字段中提供 Json 值,地图中的值将保存为
1|Url 01|"{
而不是整个 json 值。
谁能帮我解决这个问题?或者还有其他方法吗?
对您的输入阅读的一个小补充:
String hline;
while( (hline = fileReader.readLine()) != null){
line = hline;
while( ! hline.endsWith( "}" ) ){
hline = fileReader.readLine();
line += hline;
}
这应该放在一个单独的方法中,但我把它留给你 - 我不想改变太多。
我强烈建议使用像 Apache POI 这样的库来读取 excel 文件。您可以在此处找到有关读取和写入文件的详细信息:http://poi.apache.org/spreadsheet/quick-guide.html#ReadWriteWorkbook
优点是您不必尝试理解 xls 文件的格式。
如果您使用任何依赖管理构建系统或直接将 jar 文件添加到您的项目,您可以简单地将依赖添加到您的项目。
http://mvnrepository.com/artifact/org.apache.poi/poi/3.11
我想读取 excel 文件中的每一行并保存在地图中。
我的输入文件看起来像这样,
ID| Name| details
1| xx| {
"user":"xx",
"email":"xxx@xxx.in"
}
2| yy| {
"user":"yy",
"email":"yyy@xxx.in"
}
我想根据提供的 ID 获取 excel 中的值。如果我传递 2 的值,它应该 return 对应于 id - 2 的名称和详细信息。 所以我尝试使用地图和键值作为 ID。
String fileToParse = "D:\InputData.xls";
BufferedReader fileReader = null;
String line = "";
fileReader = new BufferedReader(new FileReader(fileToParse));
line = fileReader.readLine();
Map<Long, String> dataMap = new HashMap<Long, String>();
while ((line = fileReader.readLine()) != null)
{
data dataTO = new data();
String[] s = line.split("|");
String value = s[1] + "," + s[2] + "," + s[3];
dataMap.put(Long.parseLong(s[0]), value);
}
long id = 2;
String val = dataMap.get(id);
String url = val.split(",")[0];
String input = val.split(",")[1];
我的数据 class 也会像这样 excel 文件中的值具有 getter 和 setter 方法,
public class data {
private int id;
private String name;
private String details;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDetails() {
return details;
}
public void setDetails(String details) {
this.details = details;
}
}
上面的代码对于普通字符串值工作正常,但如果我在详细信息字段中提供 Json 值,地图中的值将保存为
1|Url 01|"{
而不是整个 json 值。 谁能帮我解决这个问题?或者还有其他方法吗?
对您的输入阅读的一个小补充:
String hline;
while( (hline = fileReader.readLine()) != null){
line = hline;
while( ! hline.endsWith( "}" ) ){
hline = fileReader.readLine();
line += hline;
}
这应该放在一个单独的方法中,但我把它留给你 - 我不想改变太多。
我强烈建议使用像 Apache POI 这样的库来读取 excel 文件。您可以在此处找到有关读取和写入文件的详细信息:http://poi.apache.org/spreadsheet/quick-guide.html#ReadWriteWorkbook
优点是您不必尝试理解 xls 文件的格式。
如果您使用任何依赖管理构建系统或直接将 jar 文件添加到您的项目,您可以简单地将依赖添加到您的项目。 http://mvnrepository.com/artifact/org.apache.poi/poi/3.11