2015-01-01 1 views
0

엑셀 파일의 모든 행을 읽고지도에 저장하고 싶습니다.엑셀의 모든 행을 읽고지도에 저장하는 방법

내 입력 파일

ID| Name| details 
1| xx|  { 
      "user":"xx", 
      "email":"[email protected]" 
      } 
2| yy|  { 
      "user":"yy", 
      "email":"[email protected]" 
      } 

내가 제공 한 ID를 기반으로 엑셀의 값을 얻으려면, 다음과 같이 보일 것입니다. 내가 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]; 

또한 엑셀의 값에 대한 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 가치 대신. 누구든지이 문제를 해결하는 방법을 알려 줄 수 있습니까? 아니면 이것에 대한 다른 접근법이 있습니까?

답변

1

귀하의 의견 독서에 작은 추가 :

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

이 별도의 방법에 투입되어야하지만 난 당신이 떠나 - 너무 많이 변경하지 않습니다.

+0

안녕하세요. 귀하의 코드를 보내 주셔서 감사합니다. 나는 같은 방법으로 코드를 추가했지만 실제로 작동하지만 널 포인터 예외가 발생합니다. 네 번째 열을 읽은 후 다음 열을 읽고 null 값을 얻으려고합니다. 이 문제를 해결하도록 도와 주시겠습니까? – Jugi

+0

json 값은 여분의 구분 기호 (")로 정규화됩니다. 내 json은"{ " "사용자 이름 "": ""xxx "", ""pwd "": "yyy" " }"| "{ " " "사용자 이름" ":" "xxx" ", " "pwd" ":" "yyy" " }"이므로 null 포인터 예외를 반환했습니다. 여분의 구분 기호를 제거한 후이 코드는 내 문제를 해결합니다. – Jugi

1

엑셀 파일을 읽으려면 Apache POI와 같은 라이브러리를 사용하는 것이 좋습니다. 파일에 대한 읽기 및 쓰기에 대한 자세한 내용은 여기를 참조하십시오. http://poi.apache.org/spreadsheet/quick-guide.html#ReadWriteWorkbook

xls 파일의 형식을 이해하지 않아도된다는 장점이 있습니다.

종속성 관리 빌드 시스템을 사용하거나 jar 파일을 프로젝트에 직접 추가하는 경우 프로젝트에 종속성을 간단하게 추가 할 수 있습니다. http://mvnrepository.com/artifact/org.apache.poi/poi/3.11