用Java表示Excel公式(十进制到时间解释)

时间:2008-09-30 02:08:36

标签: java excel datetime decimal

我正在将excel表公式转换为java但我无法理解excel如何设法采用以下内容:0.22 应用公式:= TEXT(R5 / 14,“h:mm”) 并以某种方式到达:0.22

如果我提供:2.8 它到达4​​.48 有人可以向我解释它是如何做到的。我已经阅读了一些关于十进制的内容,我理解转换,但这还没有帮助解释上述内容。

5 个答案:

答案 0 :(得分:1)

Excel将日期时间值存储为:

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

在您的示例中,您将十进制转换为日期时间值的小时和分钟部分的文本表示。

完成你的第一个公式,0.22除以14(你为什么这样做?)等于0.015714286。如果你在24小时工作日(乘以1440分钟)后应用这个分数,则等于22分钟并且有一些变化(即“0:22”)。

完成第二个公式,2.8除以14等于0.2。乘以1440,相当于288分钟,即4小时48分钟(即“4:48”)。

答案 1 :(得分:1)

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

http://www.formulacompiler.org/

答案 2 :(得分:0)

是的,这有点傻。取出/ 14,这有帮助。基本上1 = 1天所以R5在一天的14日表示。你可以做到

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

但未经测试。

答案 3 :(得分:0)

谢谢Creedence。

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

答案 4 :(得分:0)

可以在OpenFormula规范(文档/定义OpenOffice-Calc)中找到Spreadsheet-internals的非常好的文档。

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

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

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

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