반응형
의존성 추가
compile "org.apache.commons:commons-csv:1.8"
java 메소드
@GetMapping(value = "/returnCSV", produces = "text/csv")
public ResponseEntity<Resource> exportCSV() {
///////csv 컬럼명
String[] csvHeader = { "번호", "이름", "나이" };
//////csv 데이터
List<List<String>> csvBody = new ArrayList<>();
csvBody.add(Arrays.asList("1", "Williams", "25"));
csvBody.add(Arrays.asList("2", "Smith", "44"));
csvBody.add(Arrays.asList("3", "Brown", "31"));
ByteArrayInputStream byteArrayOutputStream;
try (
ByteArrayOutputStream out = new ByteArrayOutputStream();
CSVPrinter csvPrinter = new CSVPrinter(new PrintWriter(out),CSVFormat.DEFAULT.withHeader(csvHeader));
){
for (List<String> record : csvBody){
csvPrinter.printRecord(record);
}
csvPrinter.flush();
byteArrayOutputStream = new ByteArrayInputStream(out.toByteArray());
} catch (IOException e) {
throw new RuntimeException(e.getMessage());
}
InputStreamResource fileInputStream = new InputStreamResource(byteArrayOutputStream);
String csvFileName = "people.csv";
//////Http 헤더설정
HttpHeaders headers = new HttpHeaders();
headers.set(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + csvFileName);
//////Content Type 설정(text/csv)
headers.set(HttpHeaders.CONTENT_TYPE, "text/csv");
return new ResponseEntity<Resource>(fileInputStream,headers,HttpStatus.OK);
}
전달되는 데이터는 이렇게 생김
번호,이름,나이
1,Williams,25
2,Smith,44
3,Brown,31
웹에서 csv 전달받는 javascript 코드
전달받은 csv 을 웹에서 파일로 다운로드
fetch("http://localhost:8080/test",{
method : 'POST',
mode : 'cors',
cache : 'no-cache',
headers: {'Content-Type': 'application/json'},
credentials : 'same-origin',
redirect : 'follow',
referrer : 'no-referrer',
body: JSON.stringify(obj),
}).then(response => response.text())
.then(function(res){
let csv=[];
csv.push(res);
////////한글 처리를 해주기 위해 BOM 추가
csv = "\uFEFF" + csv;
let csvFile = new Blob([csv], { type: "text/csv" });
let downloadLink = document.createElement("a");
downloadLink.download = "filename.csv";
downloadLink.href = window.URL.createObjectURL(csvFile);
downloadLink.style.display = "none";
document.body.appendChild(downloadLink);
downloadLink.click();
})
Javascript에서 csv 생성 및 다운로드
fetch 사용
csv return 방법 참고
반응형
'코딩 관련 > Java' 카테고리의 다른 글
[JAVA] ArrayUtils로 배열에 값 추가하기 / 배열 합치기 / 배열 늘리기 (0) | 2021.09.06 |
---|---|
[JAVA] Date , SimpleDateFormat, Calendar 사용 정리 (0) | 2021.09.03 |
[JAVA] excel 읽기 (1) | 2021.08.23 |
[JAVA] txt파일 읽기 / 쓰기 (0) | 2021.07.13 |
[JAVA] 연산 헷갈리는거 정리 / 정수 연산 / 연산 결과 / 연산 타입 (0) | 2021.04.22 |