DirectDown2Excel.jsp 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  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.DirectDown2Excel" %>
  5. <%
  6. DirectDown2Excel ibExcel = new DirectDown2Excel();
  7. ibExcel.setService(request, response);
  8. //====================================================================================================
  9. // [ 사용자 환경 설정 #1 ]
  10. //====================================================================================================
  11. // Html 페이지의 엔코딩이 utf-8 로 구성되어 있으면 "ibExcel.setPageEncoding("utf-8");" 로 설정하십시오.
  12. // 엑셀 문서의 한글이 깨지면 이 값을 공백("")으로 바꿔 보십시오.
  13. // LoadExcel.jsp 도 동일한 값으로 바꿔 주십시오.
  14. //====================================================================================================
  15. ibExcel.setPageEncoding("utf-8");
  16. //====================================================================================================
  17. // [ 사용자 환경 설정 #2 ]
  18. //====================================================================================================
  19. // 엑셀에 포함될 이미지의 URL 에 가상폴더를 사용할 경우가 조금이라도 있다면 웹루트를 아래 변수에 직접 지정해 주십시오.
  20. // 엑셀에 포함될 이미지에 가상폴더를 사용하지 않으면 설정하지 마세요.
  21. //====================================================================================================
  22. String webRootPath = "D:/";
  23. ibExcel.setWebRoot(webRootPath);
  24. //====================================================================================================
  25. // [ 사용자 환경 설정 #3 ]
  26. //====================================================================================================
  27. // 트리 컬럼에서 레벨별로 … 를 덧붙여서 레벨별로 보기 좋게 만듭니다.
  28. // 만약 … 대신 다른 문자를 사용하기를 원하시면 아래 유니코드 \u2026 (16진수형태) 대신 다른 문자를 입력하십시오.
  29. // 트리 컬럼이 없으면 설정하지 마세요.
  30. //====================================================================================================
  31. ibExcel.setTreeChar("\u2026");
  32. //====================================================================================================
  33. // [ 사용자 환경 설정 #4 ]
  34. //====================================================================================================
  35. // 기본 폰트 이름과 폰트 크기를 설정합니다.
  36. // SheetDesign : 0 을 사용하는 경우에만 적용됩니다.
  37. //====================================================================================================
  38. ibExcel.setDefaultFontName("맑은고딕");
  39. ibExcel.setDefaultFontSize((short)10);
  40. //====================================================================================================
  41. // [ 사용자 환경 설정 #5 ]
  42. //====================================================================================================
  43. // IBSheet의 폰트 이름, 폰트 크기를 사용하지 않고 다음에서 설정한 값으로 강제적으로 적용합니다.
  44. // SheetDesign : 1, 2 를 사용하는 경우에만 적용됩니다.
  45. // 사용하지 않으시려면 주석처리 하세요.
  46. //
  47. //ibExcel.setFontName("궁서");
  48. //ibExcel.setFontSize((short)15);
  49. //====================================================================================================
  50. // [ 사용자 환경 설정 #6 ]
  51. //====================================================================================================
  52. // 줄바꿈 설정을 다음에서 설정한 값으로 강제적으로 적용합니다.
  53. // 사용하지 않으시려면 주석처리 하세요.
  54. //
  55. //ibExcel.setWordWrap(false);
  56. try {
  57. response.reset();
  58. // 파라메터 정보를 얻음
  59. String data = ibExcel.getData();
  60. // 파라메터 정보를 다시 설정함 (예, 암호화된 파라메터를 복호화 처리를 하여 다시 설정)
  61. ibExcel.setData(data);
  62. // 엑셀 워크북을 생성
  63. Workbook workbook = ibExcel.makeDirectExcel();
  64. // 다운로드 1. 생성된 엑셀 문서를 바로 다운로드 받음
  65. ServletOutputStream out2 = response.getOutputStream();
  66. workbook.write(out2);
  67. out2.flush();
  68. /*
  69. // 다운로드 2. 생성된 엑셀 문서를 서버에 저장
  70. // 다운로드 받을 파일 이름을 얻음
  71. String fileName = ibExcel.getDownloadFileName();
  72. FileOutputStream out2 = new FileOutputStream (webRootPath + "/" + fileName);
  73. workbook.write(out2);
  74. out2.close();
  75. // 생성된 엑셀 문서를 다운로드 받음 (예, 엑셀문서를 DRM 처리함)
  76. File file = new File( webRootPath + "/" + fileName );
  77. int fileLength = (int)file.length();
  78. response.setContentLength(fileLength);
  79. if ( file.isFile() ) {
  80. FileInputStream fileIn = new FileInputStream(file);
  81. ServletOutputStream out3 = response.getOutputStream();
  82. byte[] outputByte = new byte[fileLength];
  83. while(fileIn.read(outputByte, 0, fileLength) != -1)
  84. {
  85. out3.write(outputByte, 0, fileLength);
  86. }
  87. fileIn.close();
  88. out3.flush();
  89. out3.close();
  90. }
  91. */
  92. } catch (Exception e) {
  93. out.println("<script>alert('엑셀 다운로드중 에러가 발생하였습니다.'); history.back();</script>");
  94. e.printStackTrace();
  95. } catch (Error e) {
  96. out.println("<script>alert('엑셀 다운로드중 에러가 발생하였습니다.'); history.back();</script>");
  97. e.printStackTrace();
  98. }
  99. out.clear();
  100. out = pageContext.pushBody();
  101. %>