POI HSSF API를 사용하여 Excel 셀에서 날짜 값 읽기
자바에서의 엑셀 조작에 POI HSSF API를 사용하고 있습니다.Excel 셀 중 하나에 날짜 값 "8/1/2009"가 있는데, HSSF API를 사용하여 이 값을 읽으려고 하면 셀 유형이 수치로 검색되어 날짜의 "Double" 값이 반환됩니다.아래의 샘플 코드를 참조해 주세요.
cell = row.getCell(); // date in the cell '8/1/2009'
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_STRING:
cellValue = cell.getRichStringCellValue().getString();
break;
case HSSFCell.CELL_TYPE_NUMERIC:
cellValue = new Double(cell.getNumericCellValue()).toString();
break;
default:
}
Cell.getCellType()은 NUMERIC_TYPE을 반환하므로 이 코드는 날짜를 더블로 변환합니다. : (
HSSF POI에서 날짜를 그대로 읽을 수 있는 방법은 없나요?
다음 항목을 살펴보십시오.
HSSFDateUtil.isCellDateFormatted()
HSSFDateUtil에 대한 자세한 내용은 POI 끔찍한 스프레드시트 포맷 API를 참조하십시오.
http://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFDateUtil.html
또한 Excel을 반환하기 위한 몇 가지 도우미 방법도 제공합니다.getExcelDate()
및 Java 날짜getJavaDate()
날짜 형식이 다를 수 있으므로 주의해야 합니다만...
Excel 파일과 같은 형식으로 날짜를 참조하려면 CellDateFormatter를 사용해야 합니다.샘플 코드:
CellValue cValue = formulaEv.evaluate(cell);
double dv = cValue.getNumberValue();
if (HSSFDateUtil.isCellDateFormatted(cell)) {
Date date = HSSFDateUtil.getJavaDate(dv);
String dateFmt = cell.getCellStyle().getDataFormatString();
/* strValue = new SimpleDateFormat(dateFmt).format(date); - won't work as
Java fmt differs from Excel fmt. If Excel date format is mm/dd/yyyy, Java
will always be 00 for date since "m" is minutes of the hour.*/
strValue = new CellDateFormatter(dateFmt).format(date);
// takes care of idiosyncrasies of Excel
}
Excel은 날짜와 시간을 숫자로 취급합니다.존이 더 잘 말했으니까, 여기서 따라하지 않을게.
단, 질문 내용에 대한 샘플코드는 http://poi.apache.org/spreadsheet/quick-guide.html#CellContents에 있습니다.
POI 3.5를 사용하는 경우 다음을 사용할 수 있습니다.
cell.getDateCellValue() 메서드.이는 Excel 2007에서도 유효합니다.
POI 3.15 베타3 이후 일부 기능은deprecated
. 데이터 형식을 확인하고 Java로 검색할 수 있습니다.Date
.
SimpleDateFormat format = new SimpleDateFormat("");
String cellValue;
if(cell != null && cell.getCellTypeEnum() != CellType.STRING &&
cell.getCellTypeEnum() == CellType.NUMERIC && DateUtil.isCellDateFormatted(cell)){
cellValue = format.format(cell.getDateCellValue());
}
언급URL : https://stackoverflow.com/questions/861877/reading-date-values-from-excel-cell-using-poi-hssf-api
'programing' 카테고리의 다른 글
EPPlus를 사용하여 열 또는 셀을 읽기 전용으로 만듭니다. (0) | 2023.04.15 |
---|---|
Bash에서 어떻게 고리를 벗어날 수 있을까? (0) | 2023.04.15 |
목록에 개체가 이미 있는지 확인하는 방법 (0) | 2023.04.15 |
switch 문을 문자열에 적용할 수 없는 이유는 무엇입니까? (0) | 2023.04.15 |
이동 중에도 변수를 유지할 수 있는 방법이 있습니까? (0) | 2023.04.15 |