text/Java
excel hyper link 삽입시 주의 사항 (# -> %23 이 될때)
hoonzii
2023. 4. 2. 19:40
반응형
이번에 자바로 엑셀에 값을 넣고 생성하면서 문제가 생긴 부분이 생겼고, 해결하는 과정을 적어보고자 한다.
기존에 엑셀에 외부링크를 넣을 때 (정확히는 인터넷 페이지 주소, url) 아래와 같이 코드를 짰었고, 문제가 없었다.
String link = "<https://www.google.com>";
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("sheet1");
HSSFRow row = null;
HSSFCell cell = null;
row = sheet.createRow(0);
cell = sheet.createCell(0);
cell.setCellValue(link);
Hyperlink link_article = workbook.getCreationHelper().createHyperlink(HyperlinkType.URL);
link_article.setAddress(articleLink);
cell.setHyperlink(link_article);
문제는 제목에 적어 놨듯이, 특정문자(”#”)를 적을 때면 엑셀 내부에서 알아서 값을 치환시키는 문제가 있었다.
엑셀의 경우에 #은 오류를 의미하기에 엑셀에서 알아서 바꿔버리는듯 했다.
다행히, 누군가 나와 같은 증상을 겪고 있었고 해당 내용을 스택오버플로우에 업로드했다.
HSSFHyperlink and URL fragment encoding
하지만 내가 질문을 조회했을 때는 답변이 없었고, 나는 그럼 어쩌지? 하는 상태에 빠지고 말았다.
그래서 나는 엑셀 함수를 이용하기로 했다.
함수가 존재한다면, 함수를 이용해 해당 값의 파라미터로 넘긴다면?
“를 링크 문자열 양끝에 붙여서 엑셀 함수를 해당 셀 안에 넣어준다.
cell = row.createCell(5);
cell.setCellFormula("HYPERLINK(\\""+{본인의링크주소}+"\\", \\"원문\\")");
cell.setCellStyle(linkStyle);
내 경우에는 완벽하게 동작했기에 기록을 위해 남겨둔다.
그리고 스택오버플로우에도 적어줬다 V~
수줍은 첫 스택오버플로우 답변 ####
반응형