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) だけです。(ただし、チュートリアルでこの方法を見つけましたが、文字列に対して非常にうまく機能しているようです)。私は何をすべきか?