使用 POI HSSF API 从 Excel 单元格读取日期值
我正在使用 POI HSSF API 在 Java 中进行 excel 操作。 我的 Excel 单元格中有一个日期值“8/1/2009”,当我尝试使用 HSSF API 读取该值时,它会将单元格类型检测为数字并返回日期的“双精度”值。 请参阅下面的示例代码:
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 中的日期!?
I'm using POI HSSF API for my excel manipulations in Java. I've a date value "8/1/2009" in one of my excel cell and while I try to read this value using HSSF API, it detects the cell type as Numeric and returns the 'Double' value of my date. See the sample code below:
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() returns NUMERIC_TYPE and thus this code converts the date to double! :(
Is there any way to read the date as it is in HSSF POI !?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您可以看一下:
有关 HSSFDateUtil 的更多详细信息,请参阅 POI Horrible Spreadsheet Format API:
http://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFDateUtil.html
它还提供了一些返回 Excel 的辅助方法
getExcelDate( )
和 Java 日期getJavaDate()
。 不过,您需要对不同的日期格式保持警惕......You could take a look at:
See the POI Horrible Spreadsheet Format API for more details on HSSFDateUtil:
http://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFDateUtil.html
That also provides some helper methods for returning Excel
getExcelDate()
and Java datesgetJavaDate()
. You need to be somewhat wary of different date formats though...如果您想以与 Excel 文件中相同的格式引用日期,则应使用 CellDateFormatter。 示例代码:
If you want to reference the date in the same format in as in the Excel file, you should use the CellDateFormatter. Sample code:
Excel 将日期和时间视为数字...乔恩说得更好,所以我不会在这里回应他...
但是,您在问题中输入的示例代码位于 http://poi.apache.org/spreadsheet/quick-guide.html#CellContents
Excel treats dates and times as numbers... Jon said it better, so I won't echo him here...
However, sample code for what you've put in the question is at http://poi.apache.org/spreadsheet/quick-guide.html#CellContents
如果您使用 POI 3.5,您可以使用以下
cell.getDateCellValue() 方法。 这也适用于 Excel 2007。
If you using the POI 3.5 you can use the following
cell.getDateCellValue() method. This will work for excel 2007 as well.
自 POI 3.15 beta3 起,一些功能已被
弃用
。您可以检查数据格式并以 Java
Date
形式检索。Since POI 3.15 beta3 some functions are
deprecated
.You can check data format and retrieve as Java
Date
.