2011-02-02 59 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 。

相关问题