jsp 파일을 excel로 출력 시, image 다운로드 문제

2,947 views
Skip to first unread message

GIL

unread,
Aug 6, 2012, 9:41:28 AM8/6/12
to ks...@googlegroups.com
안녕하세요.

Spring Framework를 이용해 웹 서비스를 개발하고 있습니다.

Excel로 출력할 것이 String data 뿐이고 구현하기 쉬워 jsp 파일을 excel로 출력 했습니다. ex>  response.setHeader("content-Type", "application/vnd.ms-excel")

     ▣ 문제: chart 이미지를 함께 출력해 달라는 요구사항이 생겼습니다. <img>태그를 넣었지만 'X'로 나타 났습니다.

Excel 출력시 함께 다운로드 해야 할 거 같은데 방법이 없을까요?(iframe으로 contnt-Type: image/png 이런식으로..;)

poi 등을 써서 excel sheet를 첨부터 다시 구현하기는 이미 너무 먼 길을 온거 같습니다.

기존 jsp 파일에 image 다운만 추가 할 방버이 없을까요?

김성훈

unread,
Aug 7, 2012, 9:58:25 AM8/7/12
to ks...@googlegroups.com
몇년 전에 저도 비슷한 상황이 있었는데 jsp에 ContentType excel로 세팅하고 
img태그로 이미지 뿌려주고 table로 그리드 그려줘서 엑셀데이터 표현했었는데
이미지도 문제없이 엑셀파일에 나타났습니다.

X로 뜬다는게 엑박 말씀하신거라면 실제 이미지 경로에 문제없는지 확인하셔야 할 것 같습니다.



jsp로 엑셀 다운로드 구현 시 img태그 넣으면 문제없이 보였습니다.

2012년 8월 6일 오후 10:41, GIL <jb9...@gmail.com>님의 말:

--
Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
웹에서 이 토론을 보려면 https://groups.google.com/d/msg/ksug/-/jPprTAlWpOUJ을(를) 방문하세요.
이 그룹에 게시하려면 ks...@googlegroups.com(으)로 이메일을 보내세요.
그룹에서 탈퇴하려면 ksug+uns...@googlegroups.com로 이메일을 보내주세요.
더 많은 옵션을 보려면 http://groups.google.com/group/ksug?hl=ko에서 그룹을 방문하세요.

GIL

unread,
Aug 8, 2012, 2:41:26 AM8/8/12
to ks...@googlegroups.com
이미지 경로는 맞는거 같습니다.
서버가 설치된 로컬 브라우져에선 다운로드 되거든요(개발피씨도요)

차트는 서버 로컬 pc에 저장하고 그 경로로 이미지 태그 경로로 잡습니다

혹시 이미지 태그를 읽을 깨 다운로드가 아니라 경로를 링크 한다면 있지도 않은 유저 피씨 로컬을 뒤지고 있겠죠;;

차트 URL로도 저장이 돼서 경로를 URL로 잡으면 서버 피씨 브라우저에서도 안됩니다.

Jungtae Kim

unread,
Aug 8, 2012, 6:19:42 AM8/8/12
to ks...@googlegroups.com

클라이언트 ms오피스 버전 및 jsp 소스(이미지태그쪽) 첨부해 주시면 테스트 해보고 결과 피드백 하겠습니다

2012. 8. 8. 오후 3:41에 "GIL" <jb9...@gmail.com>님이 작성:
--
Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
웹에서 이 토론을 보려면 https://groups.google.com/d/msg/ksug/-/6Q9eg-LWxSUJ을(를)를 방문하세요.

GIL

unread,
Aug 9, 2012, 5:51:05 PM8/9/12
to ks...@googlegroups.com
▣ 엑셀 버전: 2007, 2010 입니다.
▣ 소스 내용:
         - export.jsp 
             <%
                    response.setContentType("application/nd.ms-excel;charset=euc-kr")
                    response.addHeader ("Content-Disposition", "attachment:filename=\"xxx.xls");
              %>
                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
               <div style="countraph" height:570pz; overflow:auto">
                      <img id="countGraph" alt="${alarmGraphInfo.filePath}" src="${alarmGraphInfo.filePath}" border=0/>
               </div>
          - 부가 내용
               > filePath 말고 urlPath로도 해봤는데요. urlPath는 web.xml에
                    <servlet>
                               <servlet-name>DisplayChart</servlet-name>
                               <servelt-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
                    </servlet>
                    <servlet-mapping>
                               <servlet-name>DisplayChart</servelt-name>
                               <url-patern>/servelt/DisplayChart</url-pattern>
                     </servelt-mapping>
                  이런 식으로 설정해 ex>http://xxx.xxx.xxx.xxx:8080/xxx/servlet/DissplayChart/filename.png  이런 경로의 차크 이미지 입니다.
               
               >filePath는 
                   ChartUtilities.saveChartAsJPEG(new File(C://XXX.XXX.fileName)), chart, 1100, graphHigh); 
                    이렇게 저장해 얻은 서버 로컬 저장소 주소 입니다.

직접 코드를 적어 오타가 있네요;;;;

2012년 8월 8일 수요일 오후 7시 19분 42초 UTC+9, onjo 님의 말:

YongHyuk Lee

unread,
Aug 9, 2012, 7:18:02 PM8/9/12
to ks...@googlegroups.com
외람되지만...
지금까지 몇일동안 고민하시고 열심히 하시는데....

한가지 생각을 말씀드립니다.

만약 저라면..

그 시간에 poi로 엑셀을 출력하는 방법을 택했을겁니다.
충분히 스터디 할 여유가 있었고..
xlsx, xls 두가지 포멧 모두 처리 가능하며..
껍질만 엑셀이 아닌 진짜 엑셀 파일을 출력할 수 있기 때문이지요.

선택은 스스로..!


나의 iPhone에서 보냄

2012. 8. 10. 6:51 GIL <jb9...@gmail.com> 작성:

웹에서 이 토론을 보려면 https://groups.google.com/d/msg/ksug/-/jfhG0dDzNA4J을(를) 방문하세요.

Ki Hwan Lim

unread,
Aug 9, 2012, 10:08:09 PM8/9/12
to ks...@googlegroups.com

POI를 처음부터 제외하셨지만

클라이언트의 요구사항은 결국 차트 가 포함된 엑셀 형태가 될텐데요..

템플릿 엑셀을 미리 서버에 만들어 놓고( 차트셀이 포함된)

POI를 이용해서 데이터를 해당 셀에만 적용하면,

결과론 적으로 사용자가 다운로드 할 경우에는 엑셀에서 지원하는 차트가 적용된 파일을 생성 하실수 있었을텐데
(클라이언트의 요구 사항은 이미지가 아니라 결국 차트였을테니까요..)



하지만 시간이 부족하고 엑셀 버젼에 따른 형태를 다 체크해야 하므로,
만약 저라면은..

엑셀 템플릿 포맷은 따로 링크를 걸어주고
data만 cvs 형태로 내려줘서, 그 부분에 복사해서 쓰세요 라고 했을거 같네요,


POI에서는 미약하지만 엑셀에서 지원하는 함수도 사용 가능하고, 
스프링에서는 엑셀 뷰도 있었던걸로 기억하는데

잘 해결하셨기를 기원합니다.





2012년 8월 10일 오전 8:18, YongHyuk Lee <unlogi...@gmail.com>님의 말:
Reply all
Reply to author
Forward
0 new messages