convertir fórmulas de hoja de cálculo a java

¿Qué herramientas están disponibles para convertir una hoja de cálculo de OpenOffice o Excel (con todas sus fórmulas) en un objeto Java al que se puede llamar en tiempo de ejecución?

Obviamente, esto solo haría un motor de cálculo y solo se trataría de números y texto, no de tiempo o llamadas a API.

Incluso con los rangos de celdas con nombre que se usan para (efectivamente) nombrar variables, el código de salida probablemente sería difícil de entender. Necesitaría refactorizar para obtener más como código Java normal. Sin embargo, creo que sería útil para crear un prototipo de algunos trabajos de tipo de procesamiento de datos. O para incrustar algunos motores de cálculo mantenidos por un usuario avanzado de Excel.

Editar : Un ejemplo trivial:

APARIENCIA

        A               B               C               D
1       Mortgage Value  100,000.00
2       Interest rate   4.5%
3       Type            Interest-only
4       Years           3
5       Regular payment 4,500.00
6       Total interest  13,500.00

Nombres celulares

        A               B               C               D
1       Mortgage Value  VALUE
2       Interest rate   INTEREST
3       Type            TYPE
4       Years           YEARS
5       Regular payment REGPYMT
6       Total interest  TOTALPYMT

FORMULAS

        A               B               C               D
1       Mortgage Value  100,000.00
2       Interest rate   4.5%
3       Type            Interest-only
4       Years           3
5       Regular payment =VALUE*INTEREST
6       Total interest  =YEARS*REGPYMT

se traduciría a Java como algo así como:

package example.calcengine;
import java.math.*;
public class MyCalcEngine {

    // unnamed cells
    public String A1 = "Mortgage Value";
    public String A2 = "Interest rate";
    public String A3 = "Type";
    public String A4 = "Years";
    public String A5 = "Regular payment";
    public String A6 = "Total interest";

    // named cells
    public BigDecimal VALUE = new BigDecimal(100000.00);
    public BigDecimal INTEREST = new BigDecimal(0.045);
    public String TYPE = "Interest-only";
    public BigDecimal YEARS = new BigDecimal(3);
    public BigDecimal REGPYMT = new BigDecimal(0);
    public BigDecimal TOTALPYMT = new BigDecimal(0);

    // formulas
    public void calculate() {
      REGPYMT = VALUE.multiply(INTEREST);
      TOTALPYMT = REGPYMT.multiply(YEARS);
    }
}

Asumiría un tipo fijo para las celdas, ya sea java.math.BigDecimal o String.

Respuestas a la pregunta(4)

Su respuesta a la pregunta