Java/Basic

Excel download java spring

마시멜로를찾아서 2023. 7. 25. 09:11
반응형

먼저 엑셀 파일을 생성하는 백엔드(서버) 로직을 구현합니다. 이 때 Apache POI 또는 다른 자바 엑셀 라이브러리를 사용하여 엑셀 파일을 생성합니다.

생성된 엑셀 파일을 HTTP 응답에 실어서 클라이언트(프런트엔드)로 보내기 위해 브라우저가 이해할 수 있는 형식으로 변환합니다. 보통 엑셀 파일은 application/vnd.ms-excel 또는 application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 형식으로 설정됩니다.

해당 파일의 내용을 HTTP 응답의 body에 쓰고, 파일의 MIME 타입을 설정합니다.

클라이언트(프런트엔드)에서 해당 URL을 호출하면, 백엔드에서 생성된 엑셀 파일이 HTTP 응답으로 반환되고 브라우저는 파일 다운로드를 시작합니다.


아래는 Spring Framework를 사용하여 엑셀 파일을 HTTP 응답으로 보내는 예시입니다

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;

import java.io.ByteArrayOutputStream;
import java.io.IOException;

// 엑셀 파일을 생성하고 HTTP 응답으로 반환하는 예시
public ResponseEntity<byte[]> downloadExcelFile() throws IOException {
    // 엑셀 파일 생성
    Workbook workbook = new XSSFWorkbook();
    Sheet sheet = workbook.createSheet("Sheet1");
    Row headerRow = sheet.createRow(0);
    headerRow.createCell(0).setCellValue("이름");
    headerRow.createCell(1).setCellValue("나이");

    Row dataRow = sheet.createRow(1);
    dataRow.createCell(0).setCellValue("홍길동");
    dataRow.createCell(1).setCellValue(30);

    // 엑셀 파일 스트림으로 변환
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    workbook.write(outputStream);
    workbook.close();

    // HTTP 응답 설정
    byte[] excelBytes = outputStream.toByteArray();
    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
    headers.setContentDispositionFormData("attachment", "example.xlsx");
    headers.setContentLength(excelBytes.length);

    // ResponseEntity로 파일과 헤더를 담아서 반환
    return new ResponseEntity<>(excelBytes, headers, HttpStatus.OK);
}

위의 예시 코드에서 downloadExcelFile() 메서드는 엑셀 파일을 생성하고 HTTP 응답으로 반환하는 기능을 구현하고 있습니다. ResponseEntity를 사용하여 생성된 엑셀 파일 데이터와 HTTP 헤더를 함께 반환하고 있습니다. 이렇게 하면 클라이언트에서 해당 URL을 호출하면 엑셀 파일이 다운로드됩니다.

반응형