업무 기록/WEB

JSP 이용한 엑셀 다운로드 및 차트 만들기, 엑셀 숫자 0 나오게 하기

code2772 2023. 11. 15. 17:25
728x90
반응형

JSP 코드는로 Excel 파일을 생성하는 코드 이다. 여러 부분으로 나누어서 기록 후 보기위해 작성하였다. 상황에 따라 웹사이트에서 검색한 카테고리, 번호, 등록사유에 따라 엑셀을 자동으로 다운로드 받게 된다.

 

Request Parameter Parsing:

int currentPage = request.getParameter("currentPage") == null ? 1 : Integer.parseInt(request.getParameter("currentPage"));
String searchNum = request.getParameter("searchNum") == null ? "" : request.getParameter("searchNum");
String searchCAT = request.getParameter("searchCAT") == null ? "" : request.getParameter("searchCAT");
String searchReason = request.getParameter("searchReason") == null ? "" : request.getParameter("searchReason");
String callNumType = request.getParameter("callNumType") == null ? "al" : request.getParameter("callNumType");

 

HTTP 요청에서 파라미터를 읽어오는 부분입니다. 예를 들어, 현재 페이지, 검색 번호(searchNum), 검색 카테고리(searchCAT), 검색 이유(searchReason), 발신번호 유형(callNumType) 등을 읽어오고 있디. 

 

Excel 파일 설정:

response.setHeader("Content-Disposition", "attachment; filename=Spam.xls");
response.setHeader("Content-Description", "JSP Generated Data");

이 부분은 HTTP 응답 헤더에 Excel 파일을 첨부하는 부분이다. Content-Disposition 헤더를 사용하여 브라우저에게 파일 다운로드를 지시하고 있다.

이 두 줄은 브라우저에게 응답을 "Spam.xls"이라는 다운로드 가능한 파일로 처리하라고 지시한다.
response.setHeader("Content-Disposition", "attachment; filename=Spam.xls");

Content-Disposition는 콘텐츠를 인라인으로 표시할지 또는 첨부 파일로 취급하고 다운로드할지를 나타내는 HTTP 헤더이다.
"attachment"로 설정하면 대부분의 브라우저에서 콘텐츠를 다운로드하라는 메시지를 사용자에게 표시한다filename=Spam.xls은 다운로드되는 파일의 기본 이름을 제공한다. 이 경우 사용자가 다운로드할 때 파일 이름이 "Spam.xls"로 지정된다.
response.setHeader("Content-Description", "JSP Generated Data");
Content-Description
은 메시지 본문에 포함된 콘텐츠에 대한 설명을 제공하는 HTTP 헤더이다. 종종 콘텐츠에 대한 더 많은 정보를 제공하는 데 사용된다.
이 경우 "JSP Generated Data"로 명시되어 있으며, 이는 응답으로 전송되는 콘텐츠에 대한 간단한 설명을 제공Content-Disposition가 브라우저가 콘텐츠를 처리하는 데 더 중요한 역할을 하는 반면, Content-Description은 선택적이며 콘텐츠에 대한 추가적인 컨텍스트를 제공할 수 있다.

Excel Table 작성:

<table border="1">
   <!-- 테이블 헤더 -->
   <tr>
      <td>번호</td>
      <td>카테고리</td>
      <td>발신거부번호</td>
      <td>등록일자</td>
      <td>등록사유</td>
   </tr>

   <!-- 데이터 출력 -->
   <%
      // 리스트에서 데이터를 읽어오고, 각 행에 대한 정보를 테이블에 출력하는 부분
      for (int i = 0; i < searchCnt; i++) {
         Object obj = lists.get(i);
         sRejectNum = (CallSpamData) list.get(i);

         if (obj instanceof CallSpamData) {
            CallSpamData data = (CallSpamData) obj;

            // ... (이전 코드와 동일)

            idx++;
   %>
            <!-- 각 행에 대한 데이터 출력 -->
            <tr>
               <td align="center" class="line02" style="width: 50px;"><%= i + 1 %></td>
               <!-- 생략 -->
               <!-- ... -->
            </tr>
   <%
         }
      }
   %>
</table>

Excel 파일에 표를 작성하는 부분이다. searchCnt 만큼의 데이터를 읽어와서 각 행에 대한 정보를 테이블에 출력한다. 데이터 출력 부분에서는 HTML 테이블을 작성하고 있다. 여기서 기존에 데이터를 받아와 쿼리문을 통해 내가 원하는 엑셀을 페이지에 따라 다운로드 할 수 있다. 쿼리나 더 들어가는 내용은 따로 작성하지 않고 Excel 파일 설정 위주로 작성하였다.

TIP 엑셀 숫자 0 나오게 하기

<td align="center" class="line01" style="width: 200px; mso-numer-format: \@;"></td>

mso-numer-format: \@ 을 사용하면 엑셀 앞자리에 0이 표출된다. 

반응형