Expressando fórmula Excel em Java (decimal para interpretação tempo)
Pergunta
Eu estou convertendo uma fórmula de folha de excel com java, mas eu não consigo entender como excel consegue tomar as seguintes: 0,22 Aplica-se uma fórmula: = TEXTO (R5 / 14, "h: mm") e de alguma forma chega: 0,22
Novamente, se eu fornecer: 2,8 chega a 4,48 Alguém por favor pode me explicar como ele faz isso. Eu li um pouco sobre decimal e eu entendo a conversão, mas isso ainda não ajudou a explicar o acima.
Solução
Excel armazena data e hora valores como:
- O número à esquerda do decimal representa o número de dias desde 01 de janeiro de 1900
- O número à direita do decimal representa a parte fraccional de um dia de 24 horas
No seu exemplo, você está convertendo um decimal para uma representação textual das porções de hora e minuto do valor de data e hora.
Trabalho através de sua primeira fórmula, 0,22 dividido por 14 (por que você está fazendo isso?) É igual a 0,015714286. Se você, em seguida, aplicar esta fração contra um dia de 24 horas (multiplicar por 1440 minutos), que é igual a 22 minutos e alguma mudança (ou seja, "0:22").
Trabalho através de sua segunda fórmula, 2,8 dividido por 14 é igual a 0,2. Multiplicada por 1440, que é igual a 288 minutos, que é de 4 horas e 48 minutos (isto é, "4:48").
Outras dicas
Ou a Fórmula Abacus Compiler para Java, que permite compilar as fórmulas em folhas de Excel até ao código Java byte para fácil e rápido ligando de seus aplicativos Java (pode compilar em tempo de execução sem a JDK).
Sim, é um pouco pateta. Pegue a out / 14 e que ajuda. Basicamente 1 = 1 dia para R5 é expressa em 14ths de um dia. Você provavelmente poderia fazer
int msInADay= 86400000;
Time value = new Time(R5/14 * msInADay);
mas não foi testado.
Graças Creedence.
Ele funciona com: duplo r = 0,22; duplo DriveTime = (R / 14) * 1440;
A documentação muito boa de planilha internas podem ser encontrados na specififcation OpenFormula (que documentos / define OpenOffice-Calc).
http://www.oasis-open.org /committees/documents.php?wg_abbrev=office-formula
Se você procurar um Java-Library para avaliar Excel-fórmulas, quer Apache-POI ou LibFormula do Pentaho pode ser útil:
LibFormula: http://sourceforge.net/project/showfiles.php ? group_id = 51669 & package_id = 213669