2012-08-22 92 views

回答

0

我用POI庫,這是我的ExcelParser類:

public class ExcelParser { 

    private HSSFWorkbook wb; 

    public ExcelParser(File xlsFile) throws Exception{ 

     wb = new HSSFWorkbook(new FileInputStream(xlsFile)); 
    } 

    public String getValue(String sheetName, int rowNum, int celNum) throws Exception{ 
     try{ 
      HSSFSheet sheet = null; 
      for(int i=0; i<wb.getNumberOfSheets();i++){ 
       if(wb.getSheetName(i).trim().toLowerCase().equals(sheetName.trim().toLowerCase())){ 
        sheet = wb.getSheetAt(i); 
        break; 
       } 
      } 
      if(sheet == null){ 
       throw new Exception("Sheet name '"+sheetName+"' not found."); 
      } 

      HSSFRow row  = sheet.getRow(rowNum);   
      if(row == null){return "";} 
      HSSFCell cell = row.getCell(celNum); 
      if(cell== null){return "";} 

      if(cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC){ 
       return String.valueOf(cell.getNumericCellValue()).trim(); 
      } else if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING){ 
       return cell.getStringCellValue().trim();   
      } else if (cell.getCellType() == HSSFCell.CELL_TYPE_ERROR){ 
       return "";//cell.getErrorCellValue();   
      }else if (cell.getCellType() == HSSFCell.CELL_TYPE_FORMULA){ 
       try{ 

        return cell.getStringCellValue().trim(); 
       } catch (Exception e) { 
        return ""; 
       } 
      } else{ 
       return cell.getStringCellValue().trim(); 
      } 
     } 
     catch (Exception e) { 
      throw new Exception(e.getMessage()+" in row:"+rowNum+" col:"+celNum+" sheet:"+sheetName); 
     } 
    } 
} 

警告,這個類僅用於XLS文件,如果您使用的XLSX文件,你必須使用

XSSF 

類,而不是

HSSF 
+0

謝謝;)。我可以通過使用setCellType(HSSFCell_TYPE)將單元格類型從字符串更改爲數字嗎? – Abdousoft

+0

mhmmh ...我不記得了,但你可以試試; )... – Ging3r

+0

是的。我剛發現cell.setCellType(Cell.CELL_TYPE_NUMERIC)不起作用,如果單元格不是空白或數字單元格! – Abdousoft

相關問題