Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.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_Datetime_Decimal - Fatal编程技术网

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

用Java表示Excel公式(十进制到时间解释),java,excel,datetime,decimal,Java,Excel,Datetime,Decimal,我正在将excel工作表公式转换为java,但我无法理解excel如何处理以下内容:0.22 应用公式:=文本(R5/14,“h:mm”) 不知怎的,结果是:0.22 同样,如果我提供:2.8 4点48分到达 有人能给我解释一下它是怎么做到的吗。我读了一些关于十进制的书,我理解了转换,但这还没有帮助解释上面的内容。是的,这有点愚蠢。取出/14,这会有所帮助。基本上1=1天,因此R5以一天的14分之一表示。你也许可以 int msInADay= 86400000; Time value = new

我正在将excel工作表公式转换为java,但我无法理解excel如何处理以下内容:0.22 应用公式:=文本(R5/14,“h:mm”) 不知怎的,结果是:0.22

同样,如果我提供:2.8 4点48分到达
有人能给我解释一下它是怎么做到的吗。我读了一些关于十进制的书,我理解了转换,但这还没有帮助解释上面的内容。

是的,这有点愚蠢。取出/14,这会有所帮助。基本上1=1天,因此R5以一天的14分之一表示。你也许可以

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

但这是未经测试的

Excel将日期时间值存储为:

  • 小数点左边的数字表示自1900年1月1日以来的天数
  • 小数点右边的数字表示一天24小时的小数部分
在您的示例中,您正在将十进制转换为datetime值的小时和分钟部分的文本表示形式

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

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

谢谢

它与: 双r=0.22;
双驱动时间=(r/14)*1440

在OpenFormula规范(记录/定义OpenOffice Calc)中可以找到一个非常好的电子表格内部文档

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

POI:


LibFormula:

或Abacus Formula Compiler for Java,它允许您在Excel工作表中编译公式,直到Java字节码,以便从Java应用程序快速轻松地调用(可以在运行时编译,无需JDK)


需要澄清一下:它需要0.22,应用公式并达到0.22?如果提供2.8,则返回4.48?