2011-02-02 22 views
0

私はプロジェクトで働いています。そのサーバー側のアプリケーションはofbizにあります。私はExcelシートを読み込み、編集、更新したいと思っています。しかし、通常のJavaプログラムでは働いています.papi poi API ofbizに入れたときに.But、次時々いくつかの例外【選択を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) 

" 

ここでは、両方の通常のJava & ofbizで同じApacheのポイのAPIを使用してイムです。

+0

エラーメッセージにデータ型の不一致が表示されます。あなたは、スタンドアロンのアプリケーションとビジネスのあなたのワークブックに同じデータを使用していますか? – CoolBeans

+0

coolBeanはur comment.Butの両方で同じExcelファイルを使用してくれてありがとう。 –

+1

'数値式セルからテキスト値を取得できません。' - 'cell.getNumericCellValue'を印刷してみてください。 – JoseK

答えて

2

整数トランザクション番号を読み取っているときにも同じ問題が発生しました。

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

これは、それがExcelで表示されたとおりに正確に文字列値を取得するには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(); 
    } 
} 

あなたはPOIを使用して始めるためにPOI quick guideを見て、howtoを持っている:あなたは、おそらくのような何かをしたい

が...あなたはそれが数値セルではないと思うかもしれないが、それはあります。