Java로 Excel 데이터 캡처 3
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.result1.0
2.0
3.0
Reference
이 문제에 관하여(Java로 Excel 데이터 캡처 3), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Mk-4000/items/c8feff3d30577103ce12
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
여러가지 어떻게든 할 수 없는 것인지 찾아 이쪽의 기사를 참고로 했습니다.
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
Reference
이 문제에 관하여(Java로 Excel 데이터 캡처 3), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Mk-4000/items/c8feff3d30577103ce12텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)