본문 바로가기
공부기록/자바

[Apache POI] 숫자형 텍스트 지수로 변환되는 문제

by 책읽는 개발자 ami 2023. 7. 12.
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
반응형