将电子表格公式转换为java

mar*_*inr 4 java excel spreadsheet

有哪些工具可用于将 OpenOffice 或 Excel 电子表格(及其所有公式)转换为可在运行时调用的 Java 对象?

显然,这只会创建一个计算引擎,并且只涉及数字和文本,而不是计时或 API 调用。

即使使用命名单元格范围来(有效地)命名变量,输出代码也可能难以理解。它需要重构才能变得更像正常的 Java 代码。不过,我认为这对于制作一些数据处理类型作业的原型很有用。或者用于嵌入一些由高级 Excel 用户维护的计算引擎。

编辑:一个简单的例子:

外貌

        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
Run Code Online (Sandbox Code Playgroud)

细胞名称

        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
Run Code Online (Sandbox Code Playgroud)

公式

        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
Run Code Online (Sandbox Code Playgroud)

会翻译成Java,如下所示:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

我假设单元格的类型是固定的 - java.math.BigDecimal 或 String。

Car*_*icz 6

  • Apache POI 项目提供了可以读取(大部分)Excel 电子表格的 Java 代码。

  • 另一个项目 Jacob 为任意 Windows 程序(当然包括 Excel)的 COM 自动化提供了 Java 接口。您实际上是在 Java 中从外部使用 Excel 的 API。