java 내보내기 csv 방법 설명
1843 단어 java 내보내기 csv
List<?> results = this.reportService.getArrayBeanReportDataSource(super.getQuery_sql_csv(), query_obj);
이런 상황에서 우리는 공공 방법을 써야 하기 때문에 사용합니까?지정된 유형을 사용하여 치수를 지정하지 않았습니다.그래서 List에서 추출한 객체의 속성 값을 반사하여 사용해야 합니다.
String[] Column = super.getReport_data_column().split(",");
이 문장은 스프링의 주입을 통해 필요한 속성을 얻을 수 있습니다.
StringBuffer sb = new StringBuffer();
Field[] fields = query_obj.getClass().getDeclaredFields();
getDeclaredFields()를 통해객체에 선언된 속성을 가져오는 방법입니다.그리고 우선 필요한 속성과 모든 속성을 비교한다. 왜냐하면 뒤의 조작은 필요한 속성에서 이루어지기 때문이다. 비교가 없으면 내보낸 CSV 파일에 빈 열이 많이 나타나기 때문에 이 이치는 쉽게 이해할 수 있다.또한 성명의 속성은private라고 성명할 때 setAccessible () 방법을 이용하여 그 값을 추출할 수 있도록 설정해야 한다는 것을 주의해야 한다.
마지막으로 순환을 이용하여 각 열의 값을 쉼표로 구분하여 파일에 쓰면 OK입니다.
for(Object object : results) {
try{
Field.setAccessible(fields, true);
for(int i=0;i<Column.length;i++){
for(int j=0;j<fields.length;j++){
if(fields[j].getName().equals(Column[i])){
if(i!=(Column.length-1)){
sb.append((fields[j].get(object)==null?"":fields[j].get(object))+",");
break;
}else{
sb.append((fields[j].get(object)==null?"":fields[j].get(object))+"\r
");
break;
}
}
}
}
}catch(Exception e){
e.printStackTrace();
}
}