2011-02-02 75 views
0

我在一個項目中工作。它的服務器端應用程序在ofbiz.I想閱讀,編輯,更新等excel sheet.But在正常的Java程序其working.Im使用Apache poi API 。但把在ofbiz時再運行application.Then有時也會出現一些例外。以下是Apache的POI異常OFBiz

" 
    [java] java.lang.IllegalStateException: Cannot get a text value from a nume 
ric formula cell 
    [java]  at org.apache.poi.hssf.usermodel.HSSFCell.typeMismatch(HSSFCell. 
java:637) 
    [java]  at org.apache.poi.hssf.usermodel.HSSFCell.checkFormulaCachedValu 
eType(HSSFCell.java:642) 
    [java]  at org.apache.poi.hssf.usermodel.HSSFCell.getRichStringCellValue 
(HSSFCell.java:719) 
    [java] 
    [java]  at org.apache.poi.hssf.usermodel.HSSFCell.getStringCellValue(HSS 
FCell.java:697) 
    [java]  at org.ofbiz.productionmgntSystem.setTargetPlan.getRequiredData(
setTargetPlan.java:764) 
    [java]  ***** 
    [java]  at org.ofbiz.productionmgntSystem.setTargetPlan.setTask(setTarge 
tPlan.java:201) 
    [java]  at org.ofbiz.productionmgntSystem.ThreadProcess.run(ThreadProces 
s.java:113) 

" 

在這裏,在正常的Java &的ofbiz使用同一個Apache POI API IM。

+0

錯誤消息表示數據類型不匹配。您是否在獨立應用程序和ofbiz中爲您的WorkBook使用相同的數據? – CoolBeans 2011-02-02 04:13:14

+0

coolBean感謝您的評論。但我在兩個版本中都使用相同的excel文件。 – 2011-02-02 09:00:33

回答

2

當讀取整數事務數時,我遇到了同樣的問題。這發生在我的自然的方式來解決這個問題是使用:

if(cell.getCellType()==Cell.CELL_TYPE_NUMERIC) { 
    String.valueOf(cell.getNumericCellValue()); 
} 

這不起作用爲12345轉化爲12345.0

的解決方法,以獲取字符串值,正是因爲它出現在Excel中文檔是這樣做的:

cell.setCellType(Cell.CELL_TYPE_STRING); 
String cellValue=cell.getStringCellValue(); 
0

Excel通常會將僅包含數字的單元格存儲爲數字單元格,而不是字符串單元格。你可能會認爲這不是一個數字細胞,但它是...

你可能想是這樣的:

DataFormatter formatter = new DataFormatter(Locale.US); 

.... 

for(Cell cell : row) { 
    String val; 
    if(cell.getCellType()==Cell.CELL_TYPE_NUMERIC) { 
    // Format the number to look like it does in excel 
    val = formatter.formatCellValue(cell); 
    } 
    if(cell.getCellType()==Cell.CELL_TYPE_STRING) { 
    // Just get the string as-is 
    val = cell.getRichStringCellValue().getString(); 
    } 
} 

看看在POI quick guidehowto讓你開始使用POI 。

相關問題