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

 

HSSFHyperlink and URL fragment encoding

I am using the apache poi package to generate excel workbooks. In the workbook I include cells with hyperlinks, using URLs containing fragments (#frag). In the resulting cells, the # character in...

stackoverflow.com

하지만 내가 질문을 조회했을 때는 답변이 없었고, 나는 그럼 어쩌지? 하는 상태에 빠지고 말았다.

귀스타브 쿠르베, 절망하는 남자, 1843∼1845년.

그래서 나는 엑셀 함수를 이용하기로 했다.

엑셀 HyperLink(하이퍼링크) 함수 사용하기

 

엑셀 HyperLink(하이퍼링크) 함수 사용하기

안녕하세요! 종호 입니다 :) 이번 포스팅은 엑셀 HyperLink(하이퍼링크) 함수를 사용하는 방법에 대해 알...

blog.naver.com

함수가 존재한다면, 함수를 이용해 해당 값의 파라미터로 넘긴다면?

“를 링크 문자열 양끝에 붙여서 엑셀 함수를 해당 셀 안에 넣어준다.

cell = row.createCell(5);
cell.setCellFormula("HYPERLINK(\\""+{본인의링크주소}+"\\", \\"원문\\")");
cell.setCellStyle(linkStyle);

내 경우에는 완벽하게 동작했기에 기록을 위해 남겨둔다.

 

 

그리고 스택오버플로우에도 적어줬다 V~

수줍은 첫 스택오버플로우 답변 ####

반응형