Down2Excel.jsp 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. <%@ page language="java" contentType="text/html;charset=utf-8" pageEncoding="utf-8"%>
  2. <%@ page import="java.io.*" %>
  3. <%@ page import="org.apache.poi.ss.usermodel.Workbook" %>
  4. <%@ page import="com.ibleaders.ibsheet7.ibsheet.excel.Down2Excel" %>
  5. <%
  6. Down2Excel ibExcel = new Down2Excel();
  7. ibExcel.setService(request, response);
  8. //System.out.println(com.ibleaders.ibsheet7.util.Version.getVersion());
  9. //====================================================================================================
  10. // [ 사용자 환경 설정 #1 ]
  11. //====================================================================================================
  12. // Html 페이지의 엔코딩이 utf-8 로 구성되어 있으면 "ibExcel.setPageEncoding("utf-8");" 로 설정하십시오.
  13. // 엑셀 문서의 한글이 깨지면 이 값을 공백("")으로 바꿔 보십시오.
  14. // LoadExcel.jsp 도 동일한 값으로 바꿔 주십시오.
  15. //====================================================================================================
  16. ibExcel.setPageEncoding("utf-8");
  17. //====================================================================================================
  18. // [ 사용자 환경 설정 #2 ]
  19. //====================================================================================================
  20. // 엑셀에 포함될 이미지의 URL 에 가상폴더를 사용할 경우가 조금이라도 있다면 웹루트를 아래 변수에 직접 지정해 주십시오.
  21. // 엑셀에 포함될 이미지에 가상폴더를 사용하지 않으면 설정하지 마세요.
  22. //====================================================================================================
  23. String webRootPath = "c:/temp";
  24. ibExcel.setWebRoot(webRootPath);
  25. //====================================================================================================
  26. // [ 사용자 환경 설정 #3 ]
  27. //====================================================================================================
  28. // 트리 컬럼에서 레벨별로 … 를 덧붙여서 레벨별로 보기 좋게 만듭니다.
  29. // 만약 … 대신 다른 문자를 사용하기를 원하시면 아래 유니코드 \u2026 (16진수형태) 대신 다른 문자를 입력하십시오.
  30. // 트리 컬럼이 없으면 설정하지 마세요.
  31. //====================================================================================================
  32. ibExcel.setTreeChar("\u2026");
  33. //====================================================================================================
  34. // [ 사용자 환경 설정 #4 ]
  35. //====================================================================================================
  36. // 기본 폰트 이름과 폰트 크기를 설정합니다.
  37. // SheetDesign : 0 을 사용하는 경우에만 적용됩니다.
  38. //====================================================================================================
  39. ibExcel.setDefaultFontName("맑은고딕");
  40. ibExcel.setDefaultFontSize((short)10);
  41. //====================================================================================================
  42. // [ 사용자 환경 설정 #5 ]
  43. //====================================================================================================
  44. // IBSheet의 폰트 이름, 폰트 크기를 사용하지 않고 다음에서 설정한 값으로 강제적으로 적용합니다.
  45. // SheetDesign : 1, 2 를 사용하는 경우에만 적용됩니다.
  46. // 사용하지 않으시려면 주석처리 하세요.
  47. //
  48. //ibExcel.setFontName("궁서");
  49. //ibExcel.setFontSize((short)15);
  50. //====================================================================================================
  51. // [ 사용자 환경 설정 #6 ]
  52. //====================================================================================================
  53. // 줄바꿈 설정을 다음에서 설정한 값으로 강제적으로 적용합니다.
  54. // 사용하지 않으시려면 주석처리 하세요.
  55. //
  56. //ibExcel.setWordWrap(false);
  57. //====================================================================================================
  58. // [ 사용자 환경 설정 #7 ]
  59. //====================================================================================================
  60. // 엑셀에 포함될 이미지의 URL 이 다른 도메인에 있고 함께 다운로드 받으려면 다음을 설정합니다.
  61. // 기본값은 false 이며 다른 도메인에 존재하는 이미지는 다운로드 받지 않습니다.
  62. //ibExcel.setAllowDownloadRemoteImg(true);
  63. //====================================================================================================
  64. // [ 사용자 환경 설정 #8 ]
  65. //====================================================================================================
  66. // 엑셀에 포함될 이미지의 URL 이 같은 도메인에 있지만 "/image/imgDown.jsp?idx=365" 등과 같은
  67. // 이미지 로딩 방식을 사용한다면 웹서버 도메인을 설정하세요.
  68. //ibExcel.setWebServerDomain("http://www.ibleaders.co.kr");
  69. //====================================================================================================
  70. // [ 사용자 환경 설정 #9 ]
  71. //====================================================================================================
  72. // 엑셀 다운로드 시 서버에 위치한 디자인 파일을 사용하는 경우 디자인 파일이 있는 폴더 위치를 설정하세요.
  73. // 디자인 파일을 사용하지 않는 경우 주석처리하세요.
  74. //====================================================================================================
  75. String tempRoot = "i:/tomcat7/webapps/ROOT";
  76. ibExcel.setTempRoot(tempRoot);
  77. try {
  78. response.reset();
  79. // 파라메터 정보를 얻음
  80. String data = ibExcel.getData();
  81. // 파라메터 정보를 다시 설정함 (예, 암호화된 파라메터를 복호화 처리를 하여 다시 설정)
  82. ibExcel.setData(data);
  83. // 엑셀 워크북을 생성
  84. Workbook workbook = ibExcel.makeExcel();
  85. // 다운로드 1. 생성된 엑셀 문서를 바로 다운로드 받음
  86. ServletOutputStream out2 = response.getOutputStream();
  87. workbook.write(out2);
  88. out2.flush();
  89. // 다운로드 2. 생성된 엑셀 문서를 서버에 저장
  90. /*
  91. // 다운로드 받을 파일 이름을 얻음
  92. String fileName = ibExcel.getDownloadFileName();
  93. FileOutputStream out2 = new FileOutputStream (webRootPath + "/" + fileName);
  94. workbook.write(out2);
  95. out2.close();
  96. // 생성된 엑셀 문서를 다운로드 받음 (예, 엑셀문서를 DRM 처리함)
  97. File file = new File( webRootPath + "/" + fileName );
  98. int fileLength = (int)file.length();
  99. response.setContentLength(fileLength);
  100. try {
  101. if (file.isFile()) {
  102. FileInputStream fileIn = new FileInputStream(file);
  103. ServletOutputStream out3 = response.getOutputStream();
  104. byte[] outputByte = new byte[fileLength];
  105. while (fileIn.read(outputByte, 0, fileLength) != -1) {
  106. out3.write(outputByte, 0, fileLength);
  107. }
  108. fileIn.close();
  109. out3.flush();
  110. out3.close();
  111. }
  112. } finally {
  113. file.delete();
  114. }
  115. */
  116. } catch (Exception e) {
  117. out.println("<script>alert('엑셀 다운로드중 에러가 발생하였습니다.'); history.back();</script>");
  118. e.printStackTrace();
  119. } catch (Error e) {
  120. out.println("<script>alert('엑셀 다운로드중 에러가 발생하였습니다.'); history.back();</script>");
  121. e.printStackTrace();
  122. }
  123. //out.clear();
  124. //out = pageContext.pushBody();
  125. %>