如何读取excel中的每一行并保存在地图中

我想读取Excel文件中的每一行并保存在地图中。

我的input文件看起来像这样,

ID| Name| details 1| xx| { "user":"xx", "email":"xxx@xxx.in" } 2| yy| { "user":"yy", "email":"yyy@xxx.in" } 

我想根据提供的id来获取excel中的值。 如果我传递2的值,它应该返回对应于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]; 

另外我的数据类将有像这样的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; } 

}

上面的代码对于正常的string值工作正常,但是如果我在详细信息字段中提供了Json值,那么map中的值将被保存为

 1|Url 01|"{ 

而不是整个JSON值。 任何人都可以帮助我如何解决这个问题? 或者有没有其他方法呢?

你的input阅读的一小部分:

 String hline; while( (hline = fileReader.readLine()) != null){ line = hline; while( ! hline.endsWith( "}" ) ){ hline = fileReader.readLine(); line += hline; } 

这应该是一个单独的方法,但我把这个给你 – 我不想改变太多。

我强烈build议使用像Apache POI这样的库来读取excel文件。 您可以在这里find有关读取和写入文件的详细信息: http : //poi.apache.org/spreadsheet/quick-guide.html#ReadWriteWorkbook

优点是你不必尝试了解xls文件的格式。

如果您正在使用任何依赖关系pipe理构build系统或直接将jar文件添加到您的项目,您可以简单地将依赖项添加到您的项目。 http://mvnrepository.com/artifact/org.apache.poi/poi/3.11