일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 셀트리온
- Python
- 트럼프
- 사드보복완화
- 네마녀의날
- 국제유가
- 다우산업
- LG전자
- 주식시황
- 나스닥
- 토익이메일
- dataframe
- ruby
- 시황
- englishwriting
- 영어메일
- e-mailwriting
- 어학·외국어
- 무역전쟁
- 화승엔터프라이즈
- android
- S&P
- 파이썬
- 금리인상
- toeice-mail
- 영어메일쓰기
- Intent
- 다우
- 안드로이드
- Java
- Today
- Total
Developer MJ Story
[Java/Excel POI] POI apache cell 서식 적용 하는 방법 본문
요새 엑셀로 많은 일들을 하고 있어서, 엑셀 관련 포스팅이 많은 것 같습니다.
이번 포스팅 주제는 POI library를 이용해서 cell 서식 적용하는 방법입니다.
사실 별거 아니지만……역시 모르면 삽질을 하는 것이지요.. 몇 일 동안 엄청 삽질과 검색을 했습니다.
검색으로 웬만한 건 다 찾을 수 있는데, 이상하게.. 이번 문제는 못 찾겠더라고요.
비슷한 질문을 보고, 이리저리 바꿔도 보고… 했는데! …... 왜!! 안될을까요? ㅋ
결론은 마지막에 알려 드리도록 하겠습니다. ㅋ
먼저 서식이 뭐냐 면. Data를 아래와 같이 표현하는 것을 말합니다.
보기 좋게?, 보고 싶은 데로 표현하는 것인데, 같은 데이터를 보더라도 서식이 적용 된 것과 적용 되지 않은 것은 가독성이 엄청 차이가 납니다.
예를 들어 백 만원을 읽을 때 1000000원 이러면……으잉??
이러지만, 1,000,000 이러면, 보자마자 백 만원이구나 할 수 있지요.
아래 소스는 1,000 단위로 콤마(,)를 넣어 주는 서식을 cell 에 적용한 것입니다.
void setCellFormat(int column, int row){
XSSFCellStyle cellStyle = mWorkbook.createCellStyle();
XSSFDataFormat format = mWorkbook.createDataFormat();
cellStyle.setDataFormat(format.getFormat("#,##0"));
XSSFRow xssfRow = mFirstSheet.getRow(row);
XSSFCell cell = xssfRow.getCell(column);
cell.setCellStyle(cellStyle);
}
코드는 매우 간단합니다.
setCellFormat이라는 함수에서 columns과 row를 인자로 받아 해당 column과 row에 해당하는 cell을 찾습니다.
그리고 setCellStyle로 원하는 format으로 설정!
하고 짠! 보니까 그대로….헉!
물론 잘 되는 분들도 계실 겁니다.
제가 안되었던 이유는 해당 cell 값이 String 이였기 때문입니다. Orz
이렇게 쉬웠던 문제를 해결 못해 받은 스트레스가 장난 아니었다는 게…..Orz
String 이기 때문에 1,000 단위를 인식 하지 못하기 때문에 원하는 대로 값이 변경 되지 않은 것이었습니다.
그래서 바뀐 소스는 아래와 같습니다.
void setCellFormat(int column, int row){
XSSFCellStyle cellStyle = mWorkbook.createCellStyle();
XSSFDataFormat format = mWorkbook.createDataFormat();
cellStyle.setDataFormat(format.getFormat("#,##0"));
XSSFRow xssfRow = mFirstSheet.getRow(row);
XSSFCell cell = xssfRow.getCell(column);
double d = Double.parseDouble(cell.toString());
cell.setCellType(Cell.CELL_TYPE_NUMERIC);
cell.setCellValue(d);
cell.setCellStyle(cellStyle);
}
간단하게 기존 cell 값을 POI에서 사용하는 double로 변경하고 이를 cell 에 반영하고, 서식 적용!
참 쉽죠??
'Software > Java' 카테고리의 다른 글
[Java/Thread] Thread를 구현하는 두 가지 방식 extends vs implements 뭐가 더 좋은가? (0) | 2014.07.23 |
---|---|
[Java/Thread] Java Thread 바로 종료 시키기 – interrupt() (0) | 2014.07.22 |
[Java/Arrays] java Arrays class를 활용한 object 정렬(sorting) (0) | 2014.07.10 |
[java/jsoup] jsoup Connect time out error 해결 (0) | 2014.07.05 |
[java/jxl] 자바에서 excel파일 write 하기 (1) | 2014.06.12 |