HotXLS 參考頁面,說明 IXLSWorkbook 此範例計算簡單的運算式 方法,涵蓋 Delphi 與 C++Builder Excel 自動化、XLS/XLSX 活頁簿 API、工作表功能及 Pascal 用法

Calculate 方法

計算指定運算式的結果
內建求值器支援算術運算、儲存格與範圍參照、已定義名稱範圍,以及下列幾組函式: 文字函式(TRIM、PROPER、CLEAN、CHAR、CODE、T、EXACT、REPT、FIND、SEARCH、SUBSTITUTE、REPLACE); 日期函式(EDATE、EOMONTH、DATEDIF、YEARFRAC、DAYS、WEEKNUM、ISOWEEKNUM); 工作日函式(WORKDAY、NETWORKDAYS); 工程/進制轉換函式(DEC2BIN、DEC2HEX、DEC2OCT、BIN2DEC、BIN2HEX、BIN2OCT、OCT2DEC、OCT2BIN、OCT2HEX、HEX2DEC、HEX2BIN、HEX2OCT、BASE、DECIMAL、ARABIC); 位元運算函式(BITAND、BITOR、BITXOR、BITLSHIFT、BITRSHIFT); 統計函式(VAR、VARP、STDEV、STDEVP、MODE、VARA、VARPA、STDEVA、STDEVPA); 彙總函式(PRODUCT、SUMSQ); 數學函式(GCD、LCM、MROUND、QUOTIENT、MULTINOMIAL)。 自訂或不支援的工作表函式仍可透過 OnUserFunction / OnUserFunctionEx 解析

語法

function Calculate(Expression: WideString):Variant;
Expression WideString。指定要計算運算式的字串

範例

此範例計算簡單的運算式

Val := Workbook.Calculate('100/2*3');
此範例計算文字運算式

Val := Workbook.Calculate('SUBSTITUTE("a-b-c";"-";"+")');
此範例判斷作用中工作表 A1:F10 範圍內的最小值

Val := Workbook.Calculate('MIN(A1:F10)');
此範例與前一個範例相同

Val := Workbook.ActiveSheet.Calculate('MIN(A1:F10)');

快取結果驗證

TXLSWorkbook 與 TXLSXWorkbook 可以比較已儲存的公式結果與重新求值的結果,而且不會取代已儲存的快取
function CalculateAndVerify: Integer; overload;
function CalculateAndVerify(out Mismatches: TArray<TXLSVerifyMismatch>): Integer; overload;
傳回值是不相符的筆數。每一筆記錄包含 SheetIndex、SheetName、1 起始的 Row 與 Col、Expected、Actual 與 Formula。揮發性公式、資料表儲存格、沒有儲存結果的公式,以及無法求值的公式都會被略過
MismatchCount := Workbook.CalculateAndVerify(Mismatches);
for I := 0 to MismatchCount - 1 do
  Log(Mismatches[I].SheetName, Mismatches[I].Row,
    Mismatches[I].Col, Mismatches[I].Expected, Mismatches[I].Actual);

另請參閱

OnUserFunction 回呼
TXLSWorksheet.Calculate 方法