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。
Apache POI 项目提供了可以读取(大部分)Excel 电子表格的 Java 代码。
另一个项目 Jacob 为任意 Windows 程序(当然包括 Excel)的 COM 自动化提供了 Java 接口。您实际上是在 Java 中从外部使用 Excel 的 API。