SyntaxHighlighter.all(); 스프링 엑셀 다운로드 :: 게을러지고 싶어 부지런한 개발자

스프링 프로젝트 진행 중, 데이터를 엑셀 형태로 다운로드 받을 수 있어야하는 상황이 생겼다.

이 포스팅에 올리는 소스코는 단순히 엑셀 파일로 다운 받게 해주는 간단한 템플릿(?)이고, 각자 원하는 형태에 맞춰 customize 하길 바람 ..! 

우선 엑셀 파일로 업로드 혹은 다운로드 기능을 사용하기 위해 아래와 같은 poi 관련 라이브러리가 필요하다..

<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi</artifactId>
			<version>4.1.2</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi-ooxml</artifactId>
			<version>4.1.2</version>
		</dependency>
		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi-ooxml-schemas</artifactId>
			<version>4.1.2</version>
		</dependency>

 

 

아래는 소스다.

 

* 참고: HSSFWorkBook은 xls확장명으로 다운로드 받게하고, HSSWorkbook을 XSSFWorkbook로 변경만 해주면 xlsx확장명으로 다운로드 받게 해준다!! 

Controller

	@PostMapping("/excel/download")
    public void excelDownload(@RequestParam String fileName, HttpServletResponse response, Model model) throws Exception {

        HSSFWorkbook objWorkBook = new HSSFWorkbook();
        HSSFSheet objSheet = null;
        HSSFRow objRow = null;
        HSSFCell objCell = null;       //셀 생성

        //제목 폰트
        HSSFFont font = objWorkBook.createFont();
        font.setFontHeightInPoints((short)9);
       // font.setBoldweight((short)font.BOLDWEIGHT_BOLD);
        font.setFontName("맑은고딕");

        //제목 스타일에 폰트 적용, 정렬
        HSSFCellStyle styleHd = objWorkBook.createCellStyle();    //제목 스타일
        styleHd.setFont(font);
//        styleHd.setAlignment(HSSFCellStyle.ALIGN_CENTER);
//        styleHd.setVerticalAlignment (HSSFCellStyle.VERTICAL_CENTER);

        objSheet = objWorkBook.createSheet("첫번째 시트");     //워크시트 생성

        // 1행
        objRow = objSheet.createRow(0);
        objRow.setHeight ((short) 0x150);

        objCell = objRow.createCell(0);
        objCell.setCellValue("번호");
        objCell.setCellStyle(styleHd);

        objCell = objRow.createCell(1);
        objCell.setCellValue("이름");
        objCell.setCellStyle(styleHd);

        // 2행
        objRow = objSheet.createRow(1);
        objRow.setHeight ((short) 0x150);

        objCell = objRow.createCell(0);
        objCell.setCellValue("1");
        objCell.setCellStyle(styleHd);

        objCell = objRow.createCell(1);
        objCell.setCellValue("홍길동");
        objCell.setCellStyle(styleHd);


        response.setContentType("Application/Msexcel");
        response.setHeader("Content-Disposition", "ATTachment; Filename="+URLEncoder.encode("테스트","UTF-8")+".xls");

        OutputStream fileOut  = response.getOutputStream();
        objWorkBook.write(fileOut);
        fileOut.close();

        response.getOutputStream().flush();
        response.getOutputStream().close();
   }

 

View

 <form id="excelForm" name="excelForm" method="post" action="/excel/download">
        <input type="text" name="fileName" />
        <input type="submit" value="xlsx파일로 받기" />
 </form>

 

==============아래는 실행화면 확인 ================

원하는 파일명을 칸에 입력해주고 버튼을 누르면 엑셀파일이 바로 다운되면서 엑셀을 열면 다음처럼 나온다.

+ Recent posts