Apache POI 데이터 포맷터가 과학적 표기법을 반환합니다.
자바 6의 아파치 포이 3.17로 읽고 있는 xlsx 파일이 있습니다.한 예로 123456789011이라는 값을 가진 셀이 있습니다.이것은 Java로 숫자 셀 유형 열거형 셀로 읽힙니다.데이터 포맷터를 사용하여 다음과 같은 셀 값을 가져오는 경우:
DataFormatter formatter = new DataFormatter(Locale.US); String strVal = formatter.formatCellValue(cell);
String 값은 "1.234567+11"로 표시됩니다.셀의 실제 값인 "123456789011"이 필요합니다.제가 그걸 어떻게 얻을 수 있나요?
이미 Java에서 BigDecimal을 사용하여 String을 변환하려고 했지만 지정된 정보로 할 수 있는 최선의 값이기 때문에 "123456700000"이 반환됩니다. 즉, 실제 셀 개체에서 올바른 값을 가져와야 합니다.또한 cell.getNumericCellValue()를 사용하려고 했지만 원래 값을 처리하기에는 너무 작은 제한이 있는 이중을 반환하므로 다른 검색 방법과 동일한 문제가 있는 "1.234567E11"로 검색됩니다.
xlsx에 입력할 때 원본 Cell에서 String으로 값을 가져올 수 있는 방법이 있습니까?저는 원본 xlsx에 대한 권한이 없습니다.
감사해요.
BigDecimal의 toPlainString() 메서드를 사용합니다.과학적 표기법을 사용하여 해당 숫자 String 값으로 변환합니다.
저는 이것을 시도했습니다: (제 시트의 셀 A1에 있는 번호 123456789011을 가지고 있으며 셀 유형은 숫자입니다.)
Row row = sheet.getRow(0);
Object o = getCellValue(row.getCell(0));
System.out.println(new BigDecimal(o.toString()).toPlainString());
getCellValue 메서드는 셀을 읽는 일반적인 메서드입니다.
public Object getCellValue(Cell cell) {
if (cell != null) {
switch (cell.getCellType()) {
case Cell.CELL_TYPE_STRING:
return cell.getStringCellValue();
case Cell.CELL_TYPE_BOOLEAN:
return cell.getBooleanCellValue();
case Cell.CELL_TYPE_NUMERIC:
return cell.getNumericCellValue();
}
}
return null;
}
이것이 도움이 되길 바랍니다!
언급URL : https://stackoverflow.com/questions/46431561/apache-poi-dataformatter-returns-scientific-notation
'programing' 카테고리의 다른 글
두 Git 커밋 간에 변경된 모든 파일의 목록을 가져오는 방법은 무엇입니까? (0) | 2023.07.01 |
---|---|
Git Revert 사용 방법 (0) | 2023.07.01 |
Oracle은 빈 문자열을 NULL로 간주하는 반면 SQL Server는 NULL로 간주하지 않습니다. 어떻게 하는 것이 가장 좋을까요? (0) | 2023.07.01 |
MongoDB - DBREF가 필요합니까? (0) | 2023.07.01 |
Vue.js 및 Vuex this.$store 반환을 새 Vue({store})에 추가한 후 정의되지 않음 (0) | 2023.07.01 |