Question

Je suis en train de convertir une formule Excel en java, mais je ne comprends pas comment Excel parvient à prendre les éléments suivants: 0,22 Applique une formule: = TEXT (R5 / 14, "h: mm") et arrive en quelque sorte à: 0,22

Encore une fois si je fournis: 2.8 il arrive à 4h48 Quelqu'un peut-il s'il vous plaît expliquer à moi comment il fait ça J'ai lu un peu de décimale et j'ai compris la conversion, mais cela n'a pas encore aidé à expliquer ce qui précède.

Était-ce utile?

La solution

Excel stocke les valeurs de date / heure sous la forme suivante:

  • Le nombre à gauche de la décimale représente le nombre de jours depuis le 1er janvier 1900
  • Le nombre à droite de la décimale représente la fraction d'un jour de 24 heures

Dans votre exemple, vous convertissez une décimale en une représentation textuelle des parties heure et minute de la valeur datetime.

Si vous travaillez avec votre première formule, 0,22 divisé par 14 (pourquoi faites-vous cela?) équivaut à 0,015714286. Si vous appliquez ensuite cette fraction contre une journée de 24 heures (multipliez par 1440 minutes), elle équivaut à 22 minutes et à quelques modifications (par exemple, "0: 22").

En vous servant de votre deuxième formule, 2,8 divisé par 14 est égal à 0,2. Multiplié par 1440, cela équivaut à 288 minutes, soit 4 heures et 48 minutes (c.-à-d. "4: 48").

Autres conseils

Ou Abacus Formula Compiler for Java, qui vous permet de compiler les formules dans des feuilles Excel jusqu'au code en octets Java pour un appel rapide et facile à partir de vos applications Java (peut être compilé à l'exécution sans le JDK).

http://www.formulacompiler.org/

Oui, c'est un peu maladroit. Prenez le / 14 et cela aide. Fondamentalement, 1 = 1 jour donc R5 est exprimé en 14ème jour. Vous pourriez probablement faire

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

mais cela n’a pas été testé.

Merci Creedence.

Cela fonctionne avec: double r = 0,22; double temps de conduite = (r / 14) * 1440;

Vous trouverez une très bonne documentation sur Spreadsheet-internals dans la spécification OpenFormula (qui définit / définit OpenOffice-Calc).

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

Si vous recherchez une bibliothèque Java pour évaluer les formules Excel, Apache-POI ou LibFormula de Pentaho peut être utile:

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

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top