在报表系统中,特别是财务等报表系统中。需要对固定格式的报表中cell定义取数公式。

如新中大中:

公式

返回值

gs_dwmc(预算单位代码/名称简写,账套,年度) 预算单位名称
gs_mjkm(末级科目代码/名称简写,账套,年度) 末级科目名称  

如果我们使用dxSpreadSheet时,如何定义自己的函数公式,以取得数据库等相关数据记录和计算结果呢?

三大步:

1 resourcestring
  sTriangleArea = 'TriangleArea';

implementation

{$R *.dfm}

uses
  dxSpreadSheetCoreFormulasTokens

2 procedure fpiTriangleArea(var AParamCount: Integer; var AParamKind: TdxSpreadSheetFunctionParamKindInfo);
begin
  AParamCount := 3;
  SetLength(AParamKind, AParamCount);
  AParamKind[0] := fpkValue;
  AParamKind[1] := fpkValue;
  AParamKind[2] := fpkValue;
end;
3 procedure fnTriangleArea(Sender: TdxSpreadSheetFormulaResult; const AParams: TdxSpreadSheetFormulaToken);
var
  P1, P2, P3: Variant;
begin
  if Sender.GetParamsCount(AParams) <> 3 then
    Sender.SetError(ecValue)
  else
    if Sender.ExtractNumericParameter(P1, AParams) then
      if Sender.ExtractNumericParameter(P2, AParams, 1) then
        if Sender.ExtractNumericParameter(P3, AParams, 2) then
          Sender.AddValue(0.5 * P1 * P2 * SIN(P3 * Pi / 180));
end;
4

注册:

dxSpreadSheetFunctionsRepository.Add(@sTriangleArea, fnTriangleArea, fpiTriangleArea, frkValue, 2048, ftMath);

5

如此,你就可以在表格中,可直接插入使用公式。or用代码:

SpreadSheet.ActiveSheetAsTable.CreateCell(12, 5).SetText(StringReplace('=TriangleArea(F9,F10,F11)',
    ',', SpreadSheet.FormulaController.FormatSettings.Data.ListSeparator, [rfReplaceAll, rfIgnoreCase]), True);

TDXSpreadSheet中自定义公式函数三大步骤相关推荐

  1. SPS中计算值公式函数简介

    原文:http://blog.csdn.net/xuwenwu/archive/2008/06/01/2501006.aspx 公式概述 公式是对列表或库中的值进行计算的等式.公式以等号 (=) 开头 ...

  2. spark中自定义UDAF函数实现的两种方式---UserDefinedAggregateFunction和Aggregator

    1.基于UserDefinedAggregateFunction实现平均数的计算 package com.bigdata.wb.sparkimport org.apache.spark.sql.Row ...

  3. matlab/simulink中自定义m-s函数作为simulink模块使用实例

    一般而言matlab/simulink能满足多数使用要求,但是往往在研究中会使用User-difinition s-function或者调用c,c++的库函数,这时候就需要matlab能进行c,c++ ...

  4. php自定义函数全局声明,【phpcms-v9】phpcms-v9中自定义全局函数文件:extention.func.php...

    /** * extention.func.php 用户自定义函数库 * * @copyright(C) 2005-2010 PHPCMS * @licensehttp://www.phpcms.cn/ ...

  5. python中自定义求积函数

    #!/usr/bin/python #-*- coding:UTF-8 -*- def ji(x,y):     res = x**y     return res c = ji(2,10) prin ...

  6. mysql中自定义nvl函数

    CREATE FUNCTION NVL(v1 datetime,v2 datetime) RETURNS datetime BEGINRETURN(ifnull(v1,v2)); END

  7. oracle中ak约束,Oracle自定义聚集函数

    在yangtingkun博客上看到很早以前的一篇文章,是用一个type来自定义聚集函数的,觉得非常神奇,想想用普通的函数定义还真的是不能满足需求,只能用Oracle的说明来做.开始死活看不懂这个typ ...

  8. jsp 将java对象转json对象 (自定义EL函数)

    功能:在 jsp 页面将 java对象 转换为 json对象 (使用自定义EL函数实现) 步骤: 1. 创建 JSP EL 工具类 2. 创建 tld 文件 3. 配置 web.xml 文件 4. 完 ...

  9. JAVAWEB开发之JSTL标签库的使用、 自定义EL函数、自定义标签(带属性的、带标签体的)

    JSTL  JSTL简介: JSTL的全称:JSP Standard Tag Library,JSP标准标签库 JSTL的作用:   提供给Java Web开发人员一个标准通用的标签函数库   和EL ...

最新文章

  1. 这篇论文,透露谷歌团队构想的“未来搜索”
  2. 信号与系统参考书推荐
  3. Activiti工作流之业务标识和流程的挂起激活
  4. 【MM模块】 Blanket Purchase Orders 框架订单
  5. 创业路上有指引,永洪CEO给企业服务型创业公司的融资建议
  6. ios设置中性黑体_ios 解决自定义字体无法显示问题
  7. linux系统udp通信程序,Linux UDP socket编程(UDP通讯模型) | C/C++程序员之家
  8. Arduino学习笔记36
  9. Poj2480欧拉函数
  10. 不可错过!华为终端云服务带来Mate 20系列专属礼包
  11. 马斯克投15亿,价值47000美元的比特币,其实是一群数学家搞出来的……
  12. 网页常用Javascript
  13. java如何使用while_java中的while(true)语句的用法是什么
  14. Go发起Http请求及获取相关参数
  15. 【最佳实践】如何搭建反向代理服务访问OSS资源?
  16. vscode设置字体
  17. matlab画收敛曲线,3.26 面收敛处理
  18. windows下安装设置redis
  19. d3.js-V3制作简单的飞线图
  20. 四则运算——单元测试(测试方法:Right-BICEP )

热门文章

  1. Win11设置了兼容模式还是打不开网页怎么回事?
  2. Audio API 实现音频播放器
  3. 使用SSD训练自己的模型(从图片标注开始)
  4. VUE3+ThreeJs实现3D全景场景,可自由旋转视角
  5. iOS-美颜相机 by GPUImage
  6. [2005.05.26 19:58:17] 一路奔走
  7. 苹果home键在哪里设置_苹果手机隐藏的几个重要设置 你都知道吗?
  8. 电脑计算机硬盘内存满了怎么清理,电脑C盘满了怎么清理?
  9. leetcode 做的题目总结
  10. 电子邮件已成情书新载体