Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-从excel文件中获取时间戳而不转换为十进制_Java_Excel_Selenium Webdriver_Apache Poi - Fatal编程技术网

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

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时,需要专门处理它们 您

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

您检索的小数点值
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());
  }
}