TryGetCachedFormulaValue 메서드
수식을 평가하거나 통합 문서 상태를 변경하지 않고 저장된 수식 결과를 읽습니다
이 메서드는 IXLSWorkbook 과 TXLSXWorkbook모두에서 사용할 수 있으며, 패키지 통합 문서 구현은 XLSX 및 ODS 파일을 다룹니다
엔진 중립적인 코드는 IXLSFormulaCacheReader 를 통해 어느 엔진에서든 CreateFormulaCacheReader 를 얻어 동일한 쿼리 메서드를 사용할 수 있습니다
구문
function TryGetCachedFormulaValue( SheetIndex, Row, Col: Integer; out AInfo: TXLSFormulaCacheInfo): Boolean;
좌표 및 반환 값
SheetIndex, Row및 Col 은 1부터 시작합니다
이 메서드가 True 를 반환하는 것은 캐시 상태가 xlfcsLoaded 또는 xlfcsCalculated
잘못된 좌표, 없는 셀, 수식이 아닌 셀은 False 와 xlfcsNotFormula
저장된 결과가 없는 수식은 False 와 xlfcsMissing을 반환하고, 변경 후 수식이나 계산이 실패한 이전에 캐시된 수식은 False 와 xlfcsInvalidated
캐시 정보
The TXLSFormulaCacheInfo 레코드는 다음에 선언된 두 개의 열거형으로 캐시를 분류합니다: lxStandard: State is a TXLSFormulaCacheState and Kind a TXLSFormulaCacheValueKind
| 필드 | 의미 |
|---|---|
State (TXLSFormulaCacheState) | xlfcsNotFormula, xlfcsMissing, xlfcsLoaded, xlfcsCalculated또는 xlfcsInvalidated |
Kind (TXLSFormulaCacheValueKind) | xlfcvBlank, xlfcvNumber, xlfcvDateTime, xlfcvString, xlfcvBoolean또는 xlfcvError |
Value | 메서드가 True를 반환하면 소유된 캐시 Variant, 그 외에는 Unassigned |
빈 결과, 빈 문자열, 부울 false, 숫자 0 및 오류는 서로 다른 종류를 유지하며 캐시 존재 여부의 대리로 사용되지 않습니다
BIFF 숫자 캐시는 레코드에 날짜 형식 표식이 없으므로 Double 로 유지됩니다. 오류 캐시는 varError
패키지 통합 문서의 경우 OOXML t="d" 와 ODF 날짜 값은 varDate를 반환하고, OOXML t="e" 는 varError를 반환하며, ODF 캐시된 빈 값은 void 값 형식으로 보존됩니다
수식을 변경하면 이전 캐시가 무효화되고, 캐시된 값을 할당한 후 수식을 할당하면 계산된 캐시가 기록됩니다
각 공유 수식 멤버는 자신의 캐시 존재 여부와 값을 유지합니다. 저장된 결과가 없는 팔로워는 루트 멤버의 캐시를 상속하는 대신 xlfcsMissing 을 보고합니다
계산 없음 계약
이 메서드는 스파스 셀 직접 조회만 수행하며 계산기, 사용자 함수 콜백, 수식 토큰 역컴파일, 종속성 업데이트, 캐시 쓰기 또는 더티 상태 변경을 절대 호출하지 않습니다
계산이 필요하면 일반 셀 Value 속성을 사용하십시오
리더 수명
CreateFormulaCacheReader 는 통합 문서 소유권을 이전하지 않고 통합 문서 수명 리스에 기반한 읽기 전용 어댑터를 반환합니다
통합 문서가 삭제된 후 해당 어댑터를 통한 쿼리는 해제된 통합 문서 상태를 역참조하는 대신 EXLSFormulaCacheReaderInvalidated 를 발생시킵니다
예제
Reader := Workbook.CreateFormulaCacheReader;
if Reader.TryGetCachedFormulaValue(1, 4, 2, Info) then
Memo1.Lines.Add(VarToStr(Info.Value))
else if Info.State = xlfcsMissing then
Memo1.Lines.Add('Formula has no stored result');