728x90
반응형
JAVA에서 POI 라이브러리로 엑셀을 읽을 때 숫자형 텍스트가 지수로 변환되는 문제 해결하기
문제
10020880 이런 식의 텍스트 데이터가 1.002088E7 와 같이 지수로 표현되는 문제 발생.
해결
String.valueOf(cell.getNumericCellValue()) 대신 String.format("%.0f", cell.getNumericCellValue())을 사용하여 문제 해결.
아래는 코드입니다.
public String getCellValue(Cell cell) {
String value = "";
// 셀 내용의 유형 판별
if(cell != null) {
switch (cell.getCellType()) {
case NUMERIC:
if (DateUtil.isCellDateFormatted(cell))
value = cell.getLocalDateTimeCellValue().toString();
else
value = String.format("%.0f", cell.getNumericCellValue());
if (value.endsWith(".0"))
value = value.substring(0, value.length() - 2);
break;
//나머지 case 생략
case BLANK:
case _NONE:
default:
value = "";
}
}
return value;
}
자세한 설명
만약 숫자 값을 지수표기법 없이 그대로 문자열로 변환하고 싶다면, String.format() 메서드를 사용하여 형식을 지정하면 된다. 예를 들어, %f 형식 지정자를 사용하여 소수점을 포함한 일반적인 숫자 형식으로 출력할 수 있습니다.
위의 코드에서 %f 형식 지정자는 소수점 이하 자릿수를 지정하지 않고, 소수점 이상 자릿수만 포함하여 값을 표현합니다. 따라서 stringValue는 "10020880"으로 출력됩니다.
728x90
반응형
'공부기록 > 자바' 카테고리의 다른 글
윈도우 알림 개발 with JAVA (feat. System Tray & StompSocket) (0) | 2024.03.14 |
---|---|
클라이언트(javascript)에서 저장한 쿠키값 서버(java)에서 받기 (0) | 2021.06.11 |
[자바] 메일 연동, 메일 읽기(IMAP), 안 읽은 메일만 Fetch하는 법(javax.mail.Folder.search) (0) | 2021.03.19 |