Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 버전 문자열 비교
- getEntityGraph
- https
- mysql not equal null
- RootGraph
- MSSQL
- +9:00
- spring boot
- 티스토리챌린지
- mysql equal null
- @CreateDate
- load order
- getDateCellValue
- sendFractionalSeconds
- deserializer
- 1*1000
- EmbeddedId
- AuditingEntityListener
- 운동해서 광명찾자
- yml
- MYSQL
- Protecle
- createEntityGraph
- apatch poi
- fractional seconds
- NamedEntityGraph
- pooled-lo
- 오블완
- @EntityListeners
- mysql =
Archives
- Today
- Total
Hello
Apache poi excel 읽기 빈 값(null), 숫자를 문자로 읽기 본문
728x90
Excel 빈값 처리
Row.MissingcellPolicy 클래스는 null 및 빈 셀의 경우 다른 가능한 정책을 지정하는 데 사용한다.
Row 클래스는 3개의 final MissingCellPolicy 필드를 갖고 있다.
/** Missing cells are returned as null, Blank cells are returned as normal */
public static final MissingCellPolicy RETURN_NULL_AND_BLANK = new MissingCellPolicy();
/** Missing cells are returned as null, as are blank cells */
public static final MissingCellPolicy RETURN_BLANK_AS_NULL = new MissingCellPolicy();
/** A new, blank cell is created for missing cells. Blank cells are returned as normal */
public static final MissingCellPolicy CREATE_NULL_AS_BLANK = new MissingCellPolicy();
RETURN_NULL_AND_BLANK - 누락된 셀은 null로 반환되고, 빈 셀은 정상적으로 반환됩니다.
RETURN_BLANK_AS_NULL - 누락된 셀과 빈 셀은 null로 반환됩니다.
CREATE_NULL_AS_BLANK - 누락된 셀은 새로운 빈 셀이 생성해 반환되고, 빈 셀은 정상적으로 반환됩니다.
나는 XSSF (*.xlsx 파일) 컴포넌트를 사용했기 때문에 아래 XSSFCell.getCell() 소스를 갖고왔다.
getCell() 내부적으로 policy를 구분해 리턴하는 것을 확인할 수 있다.
public XSSFCell getCell(int cellnum, MissingCellPolicy policy) {
if(cellnum < 0) throw new IllegalArgumentException("Cell index must be >= 0");
XSSFCell cell = _cells.get(cellnum);
if(policy == RETURN_NULL_AND_BLANK) {
return cell;
}
if(policy == RETURN_BLANK_AS_NULL) {
if(cell == null) return cell;
if(cell.getCellType() == Cell.CELL_TYPE_BLANK) {
return null;
}
return cell;
}
if(policy == CREATE_NULL_AS_BLANK) {
if(cell == null) {
return createCell((short)cellnum, Cell.CELL_TYPE_BLANK);
}
return cell;
}
throw new IllegalArgumentException("Illegal policy " + policy + " (" + policy.id + ")");
}
getCell 메소드 사용 시 예)
String cell2 = row.getCell(2).getStringCellValue(); // getCell(2) == null 인경우 NullPointerException 발생
String cell3 = row.getCell(3, Row.CREATE_NULL_AS_BLANK).getStringCellValue(); // getCell(3) == null 인경우 new Cell() 리턴
숫자 셀 문자로 처리
cell type을 문자로 변경 후 cell을 가져오면 된다:)
row.getCell(2).setCellType(Cell.CELL_TYPE_STRING);
String cell2 = row.getCell(2).getStringCellValue();
참고 :
https://poi.apache.org/apidocs/dev/org/apache/poi/ss/usermodel/Row.html
https://poi.apache.org/components/spreadsheet/quick-guide.html#Iterator
https://stackoverflow.com/questions/36776745/missing-cell-policy-of-apache-poi-java
728x90
'java' 카테고리의 다른 글
Java MultipartFile to String (0) | 2023.10.25 |
---|---|
[JPA] 일대일 조인 테이블 @EmbeddedId 사용 (0) | 2023.10.12 |
JPA 기본키 생성 전략 (0) | 2023.09.07 |
Daylight Saving Time(DST) in JAVA (0) | 2023.04.04 |
Apache poi getDateCellValue() 엑셀과 다른 경우 (0) | 2023.02.07 |