Java로 Excel 데이터 캡처 3

역시 지난번에 ApachePOI입니다.
htps : // 이 m/Mk-4000/이고 ms/5d52b4b92에 d5f8bf23f5

이번 내용



전회는 셀 타입마다의 취득 방법을 쓰고 있었습니다만,
CellType.FORMULA (수식 유형)
때 메서드
getCellFormula()
그럼 셀내의 수식 그 자체가 String형으로 취득할 수 있는 것을 알았습니다.
그럼 그 수식의 결과를 원할 때는?
라고 말했을 때의 대상방.

구체적으로 어떻게 할 것인가?



여러가지 어떻게든 할 수 없는 것인지 찾아 이쪽의 기사를 참고로 했습니다.
htp:///신-카와라. 그래. 네 t/아르치 cぇ/159878953. HTML

FormulaEvaluator 인터페이스
라고 하는 것이 있었습니다.

이것은 수식 셀을 평가합니다. 값으로 한다. 라고 하는 것으로, 요점은 계산후의 값으로 하기 위해서 여러가지 도와 주는 것입니다.

또한,
CreationHelper 인터페이스
도 사용한다고 합니다.
여기는 구상 클래스의 인스턴스화를 처리하는 객체.
감각적으로는 POI의 객체를 여러가지 생성해 주는 녀석이라고 생각합니다.

이 두 가지를 준비하고,
1.Workbook 객체로부터 CreationHelper를 준비(getCreationHelper())
2. CreationHelper를 통해 FormulaEvaluator도 생성 (createFormulaEvaluator ())
3. 대상 cell을 FormulaEvaluator.evaluateInCell()을 사용하여 계산해 버린다

같은 흐름입니다.

FormulaEvaluator.evaluateInCell(cell)



인수에 셀을 넣어 인수에 포함되는 셀의 수식을 평가, 계산해 버려 그 결과를 돌려주는 메소드

이것을 사용하면 수식에서도 계산 후의 값을 취할 수 있다고 합니다.

구현 결과



SamplePOI3.java
    private static String getCellStringValue(Cell cell) {
        String retStr;

        CellType cellType = cell.getCellType();
        switch (cellType) {
        case STRING:
            retStr = cell.getStringCellValue();
            break;
        case NUMERIC:
            retStr = String.valueOf(cell.getNumericCellValue());
            break;
        case BOOLEAN:
            retStr = String.valueOf(cell.getBooleanCellValue());
            break;
        case FORMULA:

            //関数結果を取得
            Workbook wb = cell.getSheet().getWorkbook();
            CreationHelper ch = wb.getCreationHelper();
            FormulaEvaluator fe = ch.createFormulaEvaluator();
            retStr = String.valueOf(getCellStringValue(fe.evaluateInCell(cell)));

            break;
        case ERROR:
            retStr = String.valueOf(cell.getErrorCellValue());
            break;
        default:
            retStr = "";
            break;
        }
        return retStr;
    }



samplePOI3.result
1.0
2.0
3.0

좋은 웹페이지 즐겨찾기