質問

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なしで実行時にコンパイルできます)

http://www.formulacompiler.org/

ええ、少し間抜けです。 / 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が役立つ場合があります。

POI: http://poi.apache.org/

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top