2013-10-18 78 views
1

我正在使用jOpenDocument庫處理.ods電子表格。因爲我正在處理字符串,所以一切都很好,但是當涉及到處理數字時,這是一種痛苦。jOpenDocument Sheet.getValueAt(int,int)返回值是一個String還是一個BigDecimal?

在我的代碼中,我迭代了電子表格,並根據單元在索引x,y處假定的值進行了一些計算。令人驚訝的是,我不能得到的I類得到的值:

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的。

我試圖找到文檔,但只有Sheet.getValueAt(String)可用於this javadoc。 (儘管我已經在教程中找到了這個方法,並且它在字符串上似乎工作得很好)。我該怎麼辦?

回答

0

原始SpreadSheet是如何創建的?你是否從文件中讀取它?

一種解決方法可以是:

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

這樣你讀的單元格的字符串值,然後將其解析到一個BigDecimal