Выражение формулы Excel на Java (десятичная интерпретация во времени)

StackOverflow https://stackoverflow.com/questions/151496

  •  02-07-2019
  •  | 
  •  

Вопрос

Я конвертирую формулу листа Excel в java, но я не могу понять, как Excel удается выполнять следующее:0.22 Применяет формулу:=ТЕКСТ(R5/14, "h:мм") и каким - то образом приходит к:0.22

Опять же, если я предоставлю:2.8 он достигает 4.48 Может кто-нибудь, пожалуйста, объяснить мне, как это делается.Я немного прочитал о десятичной системе счисления и понимаю преобразование, но это пока не помогло объяснить вышесказанное.

Это было полезно?

Решение

Excel хранит значения даты и времени следующим образом:

  • Число слева от десятичной дроби представляет количество дней, прошедших с 1 января 1900 года
  • Число справа от десятичной дроби представляет собой дробную часть 24-часового рабочего дня

В вашем примере вы преобразуете десятичную дробь в текстовое представление часовой и минутной частей значения datetime.

Прорабатываем вашу первую формулу, 0,22 делим на 14 (зачем вы это делаете?) равняется 0,015714286.Если затем применить эту дробь к 24-часовому рабочему дню (умножить на 1440 минут), то получится 22 минуты с некоторыми изменениями (т.е."0:22").

Работая по вашей второй формуле, 2,8, деленное на 14, равно 0,2.Умноженное на 1440, оно равно 288 минутам, что составляет 4 часа 48 минут (т.е."4:48").

Другие советы

Или компилятор формул Abacus для Java, который позволяет вам компилировать формулы в таблицах Excel вплоть до байтового кода Java для быстрого и удобного вызова из ваших Java-приложений (может компилироваться во время выполнения без JDK).

http://www.formulacompiler.org/

Да, это немного бестолково.Достаньте / 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 или LibFormula от Pentaho:

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

ЛибФормула: http://sourceforge.net/project/showfiles.php?group_id=51669&package_id=213669

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top