在Java中expressionExcel公式(十进制到时间解释)

我将Excel工作表公式转换为java,但是我不明白excel如何pipe理以下内容:0.22应用公式:= TEXT(R5 / 14,“h:mm”),并以某种方式到达:0.22

同样,如果我提供:2.8到达4.48有人可以向我解释它是如何做到这一点。 我已经读了一点关于小数,我理解转换,但这还没有帮助解释上述。

Excel将date时间值存储为:

  • 小数点左边的数字表示自1900年1月1日以来的天数
  • 小数点右边的数字表示24小时制的一小部分

在你的例子中,你将十进制转换成date时间值的小时和分钟部分的文本表示。

通过你的第一个公式,0.22除以14(你为什么这样做?)等于0.015714286。 如果你在24小时内使用这个分数(乘以1440分钟),那么等于22分钟和一些变化(即“0:22”)。

通过你的第二个公式,2.8除以14等于0.2。 乘以1440,等于288分钟,即4小时48分钟(即“4:48”)。

或者Abacus公式编译器for Java,它允许您在Excel工作表中将公式编译成Java字节代码,以便从Java应用程序中快速轻松地进行调用(可以在没有JDK的情况下在运行时进行编译)。

http://www.formulacompiler.org/

是的,这有点愚蠢。 拿/ 14出来,这有帮助。 基本上1 = 1天,所以R5是在一天中的十四分之一。 你可以这样做

int msInADay= 86400000; Time value = new Time(R5/14 * msInADay); 

但是没有经过testing。

感谢Creedence。

它适用于:双r = 0.22; double driveTime =(r / 14)* 1440;

电子表格内部的一个非常好的文档可以在OpenFormula规范中find(文档/定义了OpenOffice-Calc)。

http://www.oasis-open.org/committees/documents.php?wg_abbrev=office-formula

如果您寻求Java-Library来评估Excel-Formulas,则Apache-POI或Pentaho的LibFormula可能会有所帮助:

POI: http : //poi.apache.org/

LibFormula: http : //sourceforge.net/project/showfiles.php? group_id = 51669&package_id = 213669