1

jOpenDocument ライブラリを使用して .ods スプレッドシートを処理しています。文字列を処理していたので大丈夫だったのですが、数字の処理となると面倒です。

私のコードでは、スプレッドシートを反復処理し、インデックス x、y のセルが想定する値に基づいていくつかの計算を行います。驚くべきことに、取得した値のクラスを取得できません。

BigDecimal ferialestringa;
     while (true) {
                        boolean duplicate = false;
                        value = (String) sheet.getValueAt(0, count);
                        System.out.println(sheet.getValueAt(5, count).getClass());
                        ferialestringa = (BigDecimal) sheet.getValueAt(5, count);

このスニペットは以下を出力します。

class java.math.BigDecimal
class java.lang.String
Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.math.BigDecimal
    at InspectTwitter.main(InspectTwitter.java:78)

値が 2 つの異なるクラスに属しているように見えることがわかります。

返されたオブジェクトを文字列に解析しようとすると、別の ClassCastException も発生します。

class java.math.BigDecimal
Exception in thread "main" java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.String
    at InspectTwitter.main(InspectTwitter.java:78)

今回はクラスが BigDecimal のように見えることに注意してください。

ドキュメントを見つけようとしましたが、このjavadoc で利用できるのは Sheet.getValueAt(String) だけです。(ただし、チュートリアルでこの方法を見つけましたが、文字列に対して非常にうまく機能しているようです)。私は何をすべきか?

4

1 に答える 1

0

元のスプレッドシートはどのように作成されますか? ファイルから読み取りますか?

回避策は次のとおりです。

ferialestringa = new BigDecimal(sheet.getCellAt(5, count).getTextValue());

このようにして、セルの文字列値を読み取り、それを BigDecimal に解析します

于 2013-11-08T00:28:57.947 に答える