HotXLS 문서

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');

참고 항목