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