在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的情况下在运行时进行编译)。
是的,这有点愚蠢。 拿/ 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