jOpenDocument Sheet.getValueAt(int,int)返回值是String还是BigDecimal?

时间:2013-10-18 13:22:05

标签: java spreadsheet classcastexception bigdecimal odf

我正在使用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)

您可以看到该值似乎属于两个不同的类。

如果我尝试将返回的对象解析为字符串,我还会得到另一个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。

我试图找到文档,但只有this javadoc上的Sheet.getValueAt(String)可用。 (我在教程中找到了这个方法,但它似乎在字符串上运行得很好)。我该怎么办?

1 个答案:

答案 0 :(得分:0)

如何创建原始SpreadSheet?你是从文件中读到的吗?

解决方法可能是:

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

这样,您可以读取单元格的String值,然后将其解析为BigDecimal