2011-02-02 9 views
0

임 프로젝트에서 작업 중입니다. 서버 측 응용 프로그램이 ofbiz입니다. 읽기, 편집, 업데이트 등의 엑셀 시트를 원합니다. 그러나 정상적인 Java 프로그램에서 작동합니다. apache poi API를 사용하고 있습니다. ofbiz에 넣어 때 나누었다 후 다음 때로는 몇 가지 예외 국지적을 application.Then을 실행Apache OFBiz에서 Apache POI 예외

" 
    [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) 

" 

여기에 모두 일반 자바 & ofbiz에서 동일한 아파치 POI API를 사용하여 메신저입니다.

+0

오류 메시지에 데이터 형식이 일치하지 않는다고 표시됩니다. 독립 실행 형 응용 프로그램 및 ofbiz에서 동일한 데이터를 WorkBook에 사용하고 있습니까? – CoolBeans

+0

coolBean은 ur comment.But 덕분에 둘 다 같은 Excel 파일을 사용합니다. –

+1

'숫자 수식 셀에서 텍스트 값을 가져올 수 없습니다. '-'cell.getNumericCellValue'를 인쇄 해보십시오. – JoseK

답변

2

정수 트랜잭션 번호를 읽는 중 동일한 문제가 발생했습니다.

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

이것은이 엑셀에 나타나는 정확히 문자열 값을 얻을 수 12345 12345.0

해결로 변환된다대로 작동하지 않습니다 :이 문제를 해결하기 위해 나에게 발생한 자연적인 방법을 사용하는 것이 었습니다 문서는 다음과 같습니다.

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

코드를 적절하게 포맷하십시오. 감사! – Trufa

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(); 
    } 
} 

quick guidehowto이 얻을 수있는 POI를 살펴 당신이 POI를 사용하여 시작 :

당신은 아마 뭔가를 원하는 ... 당신은 숫자 세포 아니라고 생각 수도 있지만입니다 .

관련 문제