Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
Tags
- ajax 사용 예시
- modal
- route
- TAILWIND
- angular button
- mysql if
- ApexChart
- Angular Router
- 아이오닉 스크롤 이벤트
- flex-1
- 호버
- 셀렉트박스 커스텀
- 앵귤러 애니메이션
- egov spring ajax 사용 예시
- formgroup
- 모달
- Ionic modal
- angular modal
- scroll
- angular route
- 옵저버블
- 검색
- 앵귤러 모달
- Router
- 스크롤 이벤트
- angular animation
- prisma
- Oracle LISTAGG 사용 예시
- 스크롤 이벤트 감지
- summary
Archives
- Today
- Total
깜놀하는 해므찌로
Java Excel Library XLSTransformer 자바 엑셀 다운로드 예시 / 라이브러리 활용 함수 본문
반응형
SMALL
<!-- 엑셀 -->
<dependency>
<groupId>net.sf.jxls</groupId>
<artifactId>jxls-core</artifactId>
<version>1.0.6</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>openxml4j</artifactId>
<version>1.0-beta</version>
</dependency>
1. pom.xml 엑셀 파일을 다운로드 할 수 있게 해주는 jxls 패키지를 선언한다.
2. JXLS 라이브러리는 poi 라이브러리를 기반으로 작동하기에 반드시 같이 선언해야 한다.
private InputStream readTemplate(String finalTemplate) throws FileNotFoundException {
String CONTEXT_PATH = getServletContext().getRealPath("");
String templateFilePath = CONTEXT_PATH+ File.separator + excelPath + File.separator + finalTemplate;
//////System.out.println("templateFilePath ================>"+templateFilePath);
return new FileInputStream(templateFilePath);
}
3. 엑셀 파일 경로를 설정 후 문자열 경로 리턴
@Override
@SuppressWarnings("rawtypes")
protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws IOException, InvocationTargetException, SQLException, Exception, InvalidFormatException {
XLSTransformer xls = new XLSTransformer();
Configuration cf = xls.getConfiguration();
cf.setUTF16(true); //
xls.setConfiguration(cf);
InputStream is = null;
try {
is = readTemplate((String)model.get("source") );
Map<String, Object> beans = new HashMap<String, Object>();
SimpleDateFormat df = new SimpleDateFormat("yyyy.MM.dd HH:mm");
beans.put("date", df.format( new Date() ) );
beans.put("now", new Date() );
Set key = model.keySet();
for (Iterator iterator = key.iterator(); iterator.hasNext();) {
String keyName = (String) iterator.next();
beans.put( keyName, model.get(keyName) );
if( keyName.endsWith("List") ) {
List list = (List)model.get(keyName);
if( list.size() == 0 ) {
String str = "<script>alert('목록이 존재하지 않습니다.'); history.back(-1);</script>";
response.setContentType("text/html; charset=utf-8");
response.getOutputStream().write(str.getBytes());
return;
}
}
}
writeWorkbook((String)model.get("target") + "_" + sf.format(new Date() ), response, xls.transformXLS(is, beans) );
}finally {
if( is != null ) {
try {
is.close();
}catch (IOException e) {
//////System.out.println("Exception occured");
}
}
}
}
4. InputStream & OutputStream 객체를 사용하여 엑셀 다운로드를 할 수 있도록 설계
5. key 값 마지막이 "List" 로 끝날 시 사이즈를 체크하므로 반드시 리스트 타입으로 존재해야 한다.
/* 엑셀 다운로드 */
@SuppressWarnings("unchecked")
@RequestMapping(folderPath + "excelDown.do")
public ModelAndView excelDown(@ModelAttribute("searchVO") VO vo) throws Exception{
ModelAndView mav = new ModelAndView(excelView);
String tit = "제목";
String url = "/excel.xlsx";
List<VO> resultList = (List<VO>) cmmnService.selectList(vo, PROGRAM_ID+".excelDownSelectList" );
mav.addObject("target", tit);
mav.addObject("source", url);
if(resultList.size() > 0){
mav.addObject("result", resultList);
}
return mav;
}
6. URL 맵핑을 받아 엑셀을 다운을 처리하는 Controller 내 함수 사용 예시
반응형
LIST
'IT' 카테고리의 다른 글
ORA-01722: 수치가 부적합합니다 01722. 00000 - "invalid number" 해결 / NaN 문제 (0) | 2022.08.03 |
---|---|
Java Stream 자바 스트림 개념 및 예시/ InputStream / OutputStream (0) | 2022.08.02 |
Java 자바 Split 예시 (0) | 2022.08.01 |
JSP URL URI 가져다 쓰기 (0) | 2022.07.31 |
Oracel LPAD RPAD 사용 예시 / 문서 번호 / 오라클 패드 (0) | 2022.07.31 |