Java-从excel文件中获取时间戳而不转换为十进制
我在excel中有一个单元格,它有一个时间戳值“12:30:00”,当我从excel中获取单元格值到Java中的变量时,它将转换为十进制值(0.52083333)。如何保留相同的时间戳值或将小数点转换为相应的时间戳值。您检索的小数点值Java-从excel文件中获取时间戳而不转换为十进制,java,excel,selenium-webdriver,apache-poi,Java,Excel,Selenium Webdriver,Apache Poi,我在excel中有一个单元格,它有一个时间戳值“12:30:00”,当我从excel中获取单元格值到Java中的变量时,它将转换为十进制值(0.52083333)。如何保留相同的时间戳值或将小数点转换为相应的时间戳值。您检索的小数点值0.52083333333实际上是12.5/24,因此它只是一天的一小部分 MS Excel将日期存储为浮点值。整数部分表示天数,小数部分表示小时、分钟和秒 检查以下答案: 日期和时间值也以数字形式存储在Excel中。在使用ApachePOI时,需要专门处理它们 您
0.52083333333
实际上是12.5/24
,因此它只是一天的一小部分 MS Excel将日期存储为浮点值。整数部分表示天数,小数部分表示小时、分钟和秒
检查以下答案:
日期和时间值也以数字形式存储在Excel中。在使用ApachePOI时,需要专门处理它们 您可以尝试以下方法来处理此问题。
这当然只是一个例子,它在一个简单的测试用例中工作。我将12:30:00输入一个单元格,它被识别为一个日期,我获取
date
对象并从中提取时间。我用来检查的
DateUtil
是Apache POI的一部分。它还有一些其他功能,可能会对您有所帮助
但是,您应该知道,这适用于非常特殊的情况。即存储为日期的时间。
如果源文件中的单元格格式发生更改,则也可以将其存储为简单文本
根据我的经验,仅仅处理预期的情况是不够的。为了保存,您通常需要在switch语句中处理不同的单元格类型(至少是数字和字符串,也可能是公式)。您使用什么框架/API读取Excel文件?我使用Apache POI从Excel文件读取。可能重复
SimpleDateFormat timeFormat = new SimpleDateFormat("hh:mm:ss");
if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
// Dates count as numeric and must be handled separately
if (DateUtil.isCellDateFormatted(cell)) {
timeFormat.format(cell.getDateCellValue());
}
}