POI获取Excel中单元格内容时,如果为数字格式获取类型为double的问题



Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。

当采用默认的单元格格式,当单元格中为纯数字时,例如

当如下获取时,得到的却是41000.0

// 商品编号
String productNo = (row.getCell(productNoIndex) != null ? row.getCell(productNoIndex) : "").toString();

一、原因

poi默认的是double类型的数据

二、如何修改

但是如果Excel设置的是数字格式,那么如何修改程序,使得输入整数即读出整数,输入小数即读出小数

Workbook excelWB =  null ;
excelWB =  new  XSSFWorkbook(excelFile);
oneSheet = excelWB.getSheetAt( 0 );
oneRow = oneSheet.getRow(rowNum);
 
      if  (oneRow ==  null ) {
 
       continue ;
 
      } // 获取第几列对象
 
       oneCell = oneRow.getCell( 1 );
 
       if  (oneCell ==  null ) {
 
        continue ;
 
       }
   switch  (oneCell.getCellType()) {
 
       case  HSSFCell.CELL_TYPE_STRING:
 
       System.out.println(oneCell.getStringCellValue());
 
        break ;
 
       case  HSSFCell.CELL_TYPE_FORMULA:
 
        System.out.println(oneCell.getCellFormula());
  
        break ;
 
       case  HSSFCell.CELL_TYPE_NUMERIC:
 
        HSSFDataFormatter dataFormatter =  new  HSSFDataFormatter();
 
        String cellFormatted = dataFormatter.formatCellValue(oneCell);
 
System.out.println( cellFormatted );        
         break ;
 
       case  HSSFCell.CELL_TYPE_ERROR:
 
        break ;
 
       }


需要注意的地方:纯数字的情况下,即时将单元格改为文本格式,利用上述取值,也会是41000.0,也可以将上述做如下修改,即可

你可能感兴趣的:(poi,String,Excel)