Java - 从excel文件获取时间戳而不转换为十进制

时间:2014-08-11 08:09:43

标签: java excel selenium-webdriver apache-poi

我有一个excel中的单元格,其时间戳值为“12:30:00”,当我从excel获取单元格的值到Java中的变量时,它将转换为十进制值(0.520833333333333)。如何保留相同的时间戳值或相应地将小数转换为时间戳值。

3 个答案:

答案 0 :(得分:2)

日期和我假设时间值也以数字形式存储在Excel中。在使用 Apache POI 时,需要特别处理它们。

您可以尝试以下方法来处理此问题

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

这当然只是一个例子,它在一个简单的测试用例中起作用。我将 12:30:00 输入到单元格中,它被识别为日期,我获取了Date对象并从中提取了时间。
我过去检查的DateUtil Apache POI 的一部分。它还有一些其他功能可能对您有所帮助。

但是你应该知道,这适用于一个非常具体的案例。即将时间存储为日期。 如果在源文件中更改了单元格格式,它也可以存储为简单文本。

根据我的经验,仅处理预期的案例是不够的。您通常需要在switch语句中处理不同的单元格类型(至少是Numeric和String,也可能是Formula),只是为了保存。

答案 1 :(得分:1)

您要检索0.520833333333333的小数值实际上是12.5/24所以它只是一天的一小部分。

答案 2 :(得分:0)

MS Excel将日期存储为浮点值。整数部分表示天数,小数部分表示小时,分钟和秒。

检查这个答案: Getting time values from an Excel sheet