JavaでのExcel式の表現(10進数から時間解釈)
質問
Excelシートの数式をJavaに変換していますが、Excelが次のように処理する方法を理解できません:0.22 数式を適用します:= TEXT(R5 / 14、" h:mm") そしてどういうわけかで到着する:0.22
再度提供する場合:2.8 4.48に到着 誰かがこれをどのように行うのか説明してください。小数について少し読みましたが、変換については理解していますが、これはまだ上記の説明に役立っていません。
解決
Excelは日時の値を次のように保存します。
- 小数の左側の数字は、1900年1月1日からの日数を表します
- 小数の右側の数字は、24時間の小数部分を表します
この例では、10進数を日時値の時間と分の部分のテキスト表現に変換しています。
最初の式を処理する場合、0.22を14で割った値(これを行う理由)は0.015714286に等しくなります。その後、この分数を24時間(1440分で乗算)に適用すると、22分に等しくなります(つまり、「0:22」)。
2番目の式を実行すると、2.8を14で割ると0.2になります。 1440を掛けると、288分になります。これは4時間48分です(つまり、「4:48」)。
他のヒント
またはExcel用シートの数式をJavaバイトコードにコンパイルしてJavaアプリから高速かつ簡単に呼び出すことができるAbacus Formula Compiler for Java(JDKなしで実行時にコンパイルできます)
ええ、少し間抜けです。 / 14を取り出してください。基本的に1 = 1日なので、R5は1日の14分の1で表されます。おそらくできます
int msInADay= 86400000;
Time value = new Time(R5/14 * msInADay);
しかし、テストされていません。
Creedenceに感謝します。
以下で動作します: ダブルr = 0.22; double driveTime =(r / 14)* 1440;
スプレッドシート内部の非常に優れたドキュメントは、OpenFormula仕様(OpenOffice-Calcをドキュメント化/定義)に記載されています。
http://www.oasis-open.org /committees/documents.php?wg_abbrev=office-formula
Excel-Formulasを評価するためにJava-Libraryを探している場合、Apache-POIまたはPentahoのLibFormulaが役立つ場合があります。
LibFormula: http://sourceforge.net/project/showfiles.php ?group_id = 51669& package_id = 213669