我正在将excel表公式转换为java但我无法理解excel如何设法采用以下内容:0.22 应用公式:= TEXT(R5 / 14,“h:mm”) 并以某种方式到达:0.22
如果我提供:2.8 它到达4.48 有人可以向我解释它是如何做到的。我已经阅读了一些关于十进制的内容,我理解转换,但这还没有帮助解释上述内容。
答案 0 :(得分:1)
Excel将日期时间值存储为:
在您的示例中,您将十进制转换为日期时间值的小时和分钟部分的文本表示。
完成你的第一个公式,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的情况下在运行时编译)。
答案 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可能会有所帮助:
LibFormula:http://sourceforge.net/project/showfiles.php?group_id=51669&package_id=213669