반응형
◆ 하이퍼링크 참조 오류 및 해결 방법
Java에서 Apache POI의 XSSF API를 이용해 동일 워크북 내 특정 시트로 이동하는 하이퍼링크를 걸었으나, 생성된 엑셀에서 해당 하이퍼링크를 클릭해도 참조가 되지 않는 문제가 발생함.
하이퍼링크 참조가 안 돼서 엑셀파일에서 직접 하이퍼링크를 걸고 해당 셀에 마우스를 가져가보니 POI에서 생성한 링크와 달리 이동할 시트명 + 셀번호 형식으로 지정이 돼있있음.
POI에서 시트명 뒤에 참조할 셀번호(! A1)까지 추가한 뒤 다시 엑셀파일을 생성해 봤지만, 여전히 링크 참조가 안됨.
자세히 보니 엑셀에서 직접 생성한 하이퍼링크는 시트명이 작은따옴표(')로 감싸져 있었음.
POI에서 setLocation를 사 작은따옴표를 포함한 올바른 정확한 형식 ('시트명'! A1)으로 설정하니 하이퍼링크가 잘 작동함.
<하이퍼링크 형식>
setLocation("'참조시트명'!참조셀번호")
CreationHelper createHelper = workbook.getCreationHelper();
XSSFHyperlink sheetLink = (XSSFHyperlink) createHelper.createHyperlink(XSSFHyperlink.LINK_DOCUMENT);
sheetLink.setLocation("'" + JRVo.getStartTime() + "'" + "!A1");
sheet.getRow(sheet.getLastRowNum()).getCell(0).setHyperlink(sheetLink);
◆ 참고사항
- POI로 생성된 링크는 구별하기 어려우므로 필요시 글자에 밑줄과 파란색을 적용하여 링크인지 쉽게 알도록 처리하는 게 좋다.
- setAddress()는 외부 URL이나 이메일등에 사용하고, 같은 파일 내 다른 시트로 링크를 걸 때는 setLocation()를 사용해야 한다.
글 내용 중 잘못된 부분이 있거나, 첨부하실 내용이 있으시면 댓글로 남겨주세요. 공부하는데 많은 도움이 됩니다.
-- 기억의 유효기간은 생각보다 짧다. --
반응형
'라이브러리 > Apache POI' 카테고리의 다른 글
| [Apache POI] The maximum number of Cell Styles was exceeded. You can define up to 64000 style in a .xlsx Workbook 에러 (1) | 2025.05.20 |
|---|---|
| [Apache POI] 숨겨진 시트인지 여부 확인 (0) | 2024.12.09 |
| [Apache POI] 시트 생성시(createSheet)오류 (0) | 2024.08.19 |
| [Apache POI] 시트의 행(Row) 개수 가져오기 (0) | 2024.02.23 |