有什麼工具可將OpenOffice或Excel電子表格(及其所有公式)轉換爲可在運行時調用的Java對象?將電子表格公式轉換爲java
很明顯,這隻會形成一個計算引擎,只是關於數字和文本,而不是定時或API調用。
即使命名單元格區域被用來(有效)命名變量,輸出代碼也可能難以理解。它需要重構才能更像普通的Java代碼。不過,我認爲這對原型化某些數據處理類型作業很有用。或者用於嵌入由高級Excel用戶維護的一些計算引擎。
編輯:一個簡單的例子:
APPEARANCE
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
單元名稱
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
公式
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
將轉化爲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);
}
}
我會承擔細胞固定型 - 無論是java.math.BigDecimal的形式或一個字符串。
請添加呈現出源電子表格和內容示例你期望生成的代碼。 – 2010-01-11 18:27:45
單元格命名是Excel中的一項標準功能。我在示例中使用了BigDecimal來減少四捨五入的問題(尤其是貨幣計算)。 – martinr 2010-01-11 18:57:23
很明顯,上面的代碼生成示例有一個基本的缺陷,即它不代表在Java類中使用2D數組的表單。它需要做到這一點(並隱藏命名單元訪問後面的getters和setters),以支持SUM,MATCHES,LOOKUP或任何引用單元格範圍。 – martinr 2010-01-11 19:53:32