4

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

セル名

        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またはStringのいずれかです。

4

4 に答える 4

5
  • Apache POI プロジェクトは、(ほとんどの場合) Excel スプレッドシートを読み取ることができる Java コードを提供します。

  • もう 1 つのプロジェクト、Jacob は、任意の Windows プログラム (もちろん Excel を含む) の COM オートメーション用の Java インターフェイスを提供します。基本的に、Java で外部から Excel の API を操作しています。

于 2010-01-11T17:41:54.353 に答える
2

もう 1 つのオプションはExpr4Jです。Excel と互換性のある汎用式言語パーサーを実装し、式グラフを計算するための依存関係エンジンを備えています。また、Excel の組み込み関数の大部分を実装しています。

ウェブサイトからの例は次のとおりです。

public class DependencyExample
{
    public static void main(String[] args) throws Exception {
        DependencyEngine e = new DependencyEngine(new BasicEngineProvider());
        e.set("B1", "=A1*2");
        e.set("A1", "=12*2");
        e.set("C1", "=B1*A1");
        System.out.println(e.getValue(Range.valueOf("B1")));
        System.out.println(e.getValue(Range.valueOf("C1")));
        e.set("A1", "2");
        System.out.println(e.getValue(Range.valueOf("B1")));
        System.out.println(e.getValue(Range.valueOf("C1")));
    }
}

(私はプロジェクトに取り組んでいるので、フィードバックに明らかに興味があります)


于 2010-02-02T09:30:53.270 に答える
1

JExcelApi を使用すると、.xls ファイルを読み込んでセルに読み書きできます。

http://www.andykhan.com/jexcelapi/

于 2010-01-11T17:45:28.217 に答える
1

SmartXLS for javaで同様のプロジェクトを実行しました。実行時計算エンジンがあり、アドイン数式をサポートしています。ソース ワークブックは、Java プログラムに埋め込むことができる Java クラスに変換され、Excel での入力と同じようにパラメーターを使用して呼び出します。

于 2010-01-28T04:21:50.433 に答える