Java POI : How to read Excel cell value and not the formula computing it?

后端 未结 5 635
借酒劲吻你
借酒劲吻你 2020-12-12 22:42

I am using Apache POI API to getting values from an Excel file. Everything is working great except with cells containing formulas. In fact, the cell.getStringCellValu

5条回答
  •  Happy的楠姐
    2020-12-12 22:59

    SelThroughJava's answer was very helpful I had to modify a bit to my code to be worked . I used https://mvnrepository.com/artifact/org.apache.poi/poi and https://mvnrepository.com/artifact/org.testng/testng as dependencies . Full code is given below with exact imports.

     import java.io.FileInputStream;
        import java.io.FileNotFoundException;
        import java.io.IOException;
    
        import org.apache.poi.hssf.usermodel.HSSFCell;
        import org.apache.poi.hssf.util.CellReference;
        import org.apache.poi.sl.usermodel.Sheet;
        import org.apache.poi.ss.usermodel.Cell;
        import org.apache.poi.ss.usermodel.CellType;
        import org.apache.poi.ss.usermodel.CellValue;
        import org.apache.poi.ss.usermodel.FormulaEvaluator;
        import org.apache.poi.ss.usermodel.Row;
        import org.apache.poi.ss.usermodel.Workbook;
        import org.apache.poi.ss.usermodel.WorkbookFactory;
        import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    
    
        public class ReadExcelFormulaValue {
    
            private static final CellType NUMERIC = null;
            public static void main(String[] args) {
                try {
                    readFormula();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            public static void readFormula() throws IOException {
                FileInputStream fis = new FileInputStream("C:eclipse-workspace\\sam-webdbriver-diaries\\resources\\tUser_WS.xls");
                org.apache.poi.ss.usermodel.Workbook workbook = WorkbookFactory.create(fis);
                org.apache.poi.ss.usermodel.Sheet sheet = workbook.getSheetAt(0);
    
                FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
    
                CellReference cellReference = new CellReference("G2"); // pass the cell which contains the formula
                Row row = sheet.getRow(cellReference.getRow());
                Cell cell = row.getCell(cellReference.getCol());
    
                CellValue cellValue = evaluator.evaluate(cell);
                System.out.println("Cell type month  is "+cellValue.getCellTypeEnum());
                System.out.println("getNumberValue month is  "+cellValue.getNumberValue());     
              //  System.out.println("getStringValue "+cellValue.getStringValue());
    
    
                cellReference = new CellReference("H2"); // pass the cell which contains the formula
                 row = sheet.getRow(cellReference.getRow());
                 cell = row.getCell(cellReference.getCol());
    
                cellValue = evaluator.evaluate(cell);
                System.out.println("getNumberValue DAY is  "+cellValue.getNumberValue());    
    
    
            }
    
        }
    

提交回复
热议问题