IT/자바, 스프링

csv 파일 만들어서 다운로드 시켜주기

thesse 2019. 9. 21. 21:59
300x250
반응형

Conteroller.java

	@ResponseBody
	@GetMapping(value = "download")
	public ResponseEntity<String> download() {
		logger.debug("=========== download ===========");
		
		List<User> user = userService.findAll();
		
		HttpHeaders header = new HttpHeaders();
		header.add("Content-Type", "text/csv; charset=MS949");
		header.add("Content-Disposition", "attachment; filename=\""+"user.csv"+"\"");
		
				
		return new ResponseEntity<String>(setContent(user), header, HttpStatus.CREATED);
	}

프로젝트 전반적인 인코딩은 utf-8이지만 csv 만들때는 MS949를 써야 된다고 한다.

혹시나 싶어 utf-8로 했더니 정말 깨진다....

여기서는 서비스를 이용해 원하는 데이터 리스트를 가져오고 HttpHeader를 설정해준다.

그리고 리턴값으로 setContent() 메서드에 데이터 리스트를 넣어 csv 파일을 만들어준다.

 

 

	public String setContent(List<User> user) {
		String data = "";
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
		
		data += "pid, 이름, 부서, 직위, 데이터기준일 : "+sdf.format(new Date())+"\n";
		
		for (int i=0; i<user.size(); i++) {
			data += user.get(i).getUid() + ",";
			data += user.get(i).getName() + ",";
			data += user.get(i).getDept() + ",";
			data += user.get(i).getPos() + "\n";
		}
		
		return data;
	}

 

View.jsp

<button onclick="location.href='/download'">csv 다운로드</button>

그리고 뷰에서 버튼을 만들어 컨트롤러에서 지정한 링크를 달면

csv 파일을 다운받을 수 있다.

 

 

 

 

 

 

 

 

 

 

+ 참고

https://marobiana.tistory.com/25

위 블로그에서는 ResponseBody 어노테이션이 먹지 않아 ResponseEntity 어노테이션을 썼다고 했는데

나는 @ResponseBody로 잘 작동되었다...

혹시 한글이 깨진다면 참조해보자.

300x250
반응형

'IT > 자바, 스프링' 카테고리의 다른 글

jpa 어노테이션  (0) 2021.02.02
intellij에서 maven도 안뜨고 run도 안될때  (0) 2021.01.11
jpa 페이지네이션 메서드  (0) 2019.09.11
ORM, JPA, Hibernate  (0) 2019.08.27
jdbc 사용 전 준비하기  (0) 2019.08.12