HotXLS Docs

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 方法