xssfworkbook tutorial read poi para libreria descargar create java excel apache-poi poi-hssf

java - tutorial - Lectura de los valores de fecha de la celda excel utilizando POI HSSF API



java read excel file xlsx (5)

Desde el POI 3.15 beta3 algunas funciones están en deprecated . Puede verificar el formato de los datos y recuperarlos como Date Java.

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()); }

Estoy utilizando POI HSSF API para mis manipulaciones de Excel en Java. Tengo un valor de fecha "01/08/2009" en una de mis celdas de Excel y mientras trato de leer este valor usando la API HSSF, detecta el tipo de celda como Numérico y devuelve el valor "Doble" de mi fecha. Vea el código de muestra a continuación:

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 () devuelve NUMERIC_TYPE y, por lo tanto, este código convierte la fecha en doble. :(

¿Hay alguna forma de leer la fecha tal como está en el POI de HSSF?



Podrías echar un vistazo a:

HSSFDateUtil.isCellDateFormatted()

Consulte la API de formato de hoja de cálculo de POI Horrible para obtener más detalles sobre HSSFDateUtil:

http://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFDateUtil.html

Eso también proporciona algunos métodos auxiliares para devolver Excel getExcelDate() y fechas de Java getJavaDate() . Sin embargo, debes ser cauteloso con los diferentes formatos de fecha ...


Si desea hacer referencia a la fecha en el mismo formato que en el archivo de Excel, debe usar CellDateFormatter. Código de muestra:

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 }


Si usa el POI 3.5, puede usar lo siguiente

Método cell.getDateCellValue () Esto también funcionará para Excel 2007.