2016-07-20 6 views
1

ExcelからMySQLにデータをインポートしようとしています。テキストセルから数値を取得できません

java.util.ArrayList; 
    import java.util.Iterator; 

    import org.apache.poi.ss.usermodel.Cell; 
    import org.apache.poi.ss.usermodel.DataFormatter; 
    import org.apache.poi.ss.usermodel.Row; 
    import org.apache.poi.ss.usermodel.Sheet; 

    import moduleobject.Summary; 

    public class SummaryReader implements SheetReader<ArrayList<Summary>> { 

     public ArrayList<Summary> read(Sheet sheet) { 

      Iterator<Row> rowiterator = sheet.iterator(); 
      rowiterator.next(); 
      ArrayList<Summary> list = new ArrayList<>(); 
      Summary obj = new Summary(); 
      while (rowiterator.hasNext()) { 

       Row nextRow = rowiterator.next(); 
       Iterator<Cell> celliterator = nextRow.cellIterator(); 

       while (celliterator.hasNext()) { 

        obj.setProcessor(celliterator.next().getStringCellValue()); 
        obj.setProcessName(celliterator.next().getStringCellValue()); 

        obj.setLevel(celliterator.next().getNumericCellValue()); 
        obj.setPA11(celliterator.next().getNumericCellValue()); 
        obj.setPA21(celliterator.next().getNumericCellValue()); 
        obj.setPA22(celliterator.next().getNumericCellValue()); 

        // obj.setPA31(celliterator.next().getNumericCellValue()); 
        // obj.setPA32(celliterator.next().getNumericCellValue()); 
       } 
      } 

      list.add(obj); 

      return list; 
     } 

    } 

私は取得していますエラーが

Exception in thread "main" java.lang.IllegalStateException: Cannot get a numeric value from a text cell 
    at org.apache.poi.xssf.usermodel.XSSFCell.typeMismatch(XSSFCell.java:994) 
    at org.apache.poi.xssf.usermodel.XSSFCell.getNumericCellValue(XSSFCell.java:305) 
    at reader.SummaryReader.read(SummaryReader.java:32) 
    at reader.SummaryReader.read(SummaryReader.java:1) 
    at controller.JobController.startJob(JobController.java:69) at job.JobLauncher.main(JobLauncher.java:21) 

なぜ私はこの例外を得るのですか?ですかおそらく、

+2

なぜ 'jpa'と' Project'tagを? – Jens

+2

私はエラーメッセージがかなり明確だと思います。セル内の値は数値ではないテキストとして整形されます – Jens

+0

セルに数値がありません – meghna

答えて

-1

、方法の一つは、あなたがセルの値を読んでいる場合、あなたは数に文字列値を解析することができますstring.Thenとしてセルの値を読む前に、あなたは

celliterator.next().setCellType(CELL_TYPE_STRING); 

としてセルタイプを設定することができるということです必要です。

+1

[Apache POI JavaDocsは、文字列への数値の処理方法が間違っていることを非常に明確にしています](https://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/Cell.html#setCellType int))、そうしないでください! – Gagravarr

1

使用してください:

DataFormatter formatter = new DataFormatter(); 
Cell cell = sheet.getRow(i).getCell(0); 
String var_name = formatter.formatCellValue(cell); 
関連する問題