본문 바로가기
FreamWork/Spring

2018.12.08 스프링 엑셀다운로드

by 신코딩 2018. 12. 8.

스프링 엑셀다운로드 



   

+




안녕하세요 신코딩입니다. 오늘은 엑셀다운로드를 해볼건데요 리스트가 있다면 대부분 엑셀기능도 같이 있는경우가 있어서 
연습삼아 엑셀다운로드를 해볼까합니다 





의존성 주입(DI)


poi ( xls 사용시필요 )

<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.7</version> </dependency>


poi-ooxml ( xlsx 사용시필요 )
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.7</version> </dependency>

xls  형식의 엑셀은 한시트에 최대 65,535행의 데이터를 가질수 있다고 하네요!!
xlsx 형식의 엑셀은 한시트에 최대 1,0488,576행의 데이터를 가질수 있다고 하네요!!


만약 업무특성상 엑셀에 대용량에 데이터가 들어갈경우는 xlsx를 사용하게는 나을꺼같네요 선택은자유니까요~~

의존성주입을 다해주셧다면 바로 Java코드로 넘어가겠습니다.




화면


Excel 버튼 클릭 시 

$.ajax({

type : "get",

url : "./excelDownXlsx"

data : { url : $(location).attr('pathname'), sheetNm : "감리원 정보목록" },

success : function(data){ messageJs.alertMeassge(data); }

});


url의 경우 해당url로 경로를 받아  url마다 DB에서 정보를 조회하기위한 값입니다





①. xlsx


Controller

produces → Ajax로 return값을 던져줄시 한글이 깨지므로 처리


@RequestMapping(value ="/excelDownXlsx", produces = "application/text; charset = utf8")

public @Response String excelDownXlsx(){


//-- 객체선언

XSSFRow row = null;

XSSFCell cell = null;

List<HashMap<String, Object>> m = null;

String [] sKey = {"name", "sex", "age", "addr"};



XSSFWorkBook workBook = new XSSFWorkbook();

XSSFSheet sheet = workBook.createSheet("시트명");



//-- m 객체의 DB에서 가져온 데이터가 있다고 가정하고 진행하겠습니다.

if( m.isEmpty() == false && m.size() > 0 ){


for(int i = 0; i < m.size(); i++){

// 1.row에 시트를 생성

row = sheet.createRow(i);


for(int j = 0; j < sKey.length; j++){


// 2.생성된 Row에 Cell생성

cell = row.createCell(j);


// 3.생성된 Cell에 데이터 Add

cell.SetCellValue( m.get(i).get(sKey[j]).toString() );

}

}

}


FileOutputStream fileOutPut = new FileOutputStream("다운받을 경로");


// 4.데이터까지 Add된 파일을 쓴다.

workBook.write(fileOutPut);


// 5. fileOutPut 닫아준다.

fileOutPut.close();



// 마지막으로 성과여부

return "엑셀다운로드 완료!!";

}


여기까지가 xlsx 형식입니다.




②. xls