我正在将 excel 工作表公式转换为 java,但我无法理解 excel 如何设法获取以下内容:0.22应用公式:=文本(R5/14,“ H:MM”),并以某种方式到达:0.22

如果我再次提供:2.8 到达 4.48 谁能解释一下它是如何做到这一点的?我读过一些有关十进制的内容,并且理解了转换,但这还不足以解释上述内容。

有帮助吗?

解决方案

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”)。

其他提示

或者用于 Java 的 Abacus 公式编译器,它允许您将 Excel 工作表中的公式直接编译为 Java 字节代码,以便从 Java 应用程序快速轻松地调用(可以在运行时编译,无需 JDK)。

http://www.formulacompiler.org/

是的,这有点愚蠢。把 /14 去掉就会有帮助。基本上 1=1 天,因此 R5 表示为一天的 14 分之一。你也许可以做

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

但它未经测试。

谢谢克里登斯。

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

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

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

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

兴趣点: http://poi.apache.org/

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top