在报表系统中,特别是财务等报表系统中。需要对固定格式的报表中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. python 用for循环生成字典_我需要创建一个for循环来生成嵌套字典
  2. 校运动会c语言程序编写,校运动会管理系统报告C语言(含完整代码)
  3. Chrome指令/追踪Http请求相关
  4. JSF请求处理过程(二)请求处理过程总览(FacesServlet#service)
  5. Pytorch常用技巧记录
  6. paip.python错误解决6
  7. MySQL(4)-----DML数据库操作(下)
  8. AI早教产业鄙视链,你处在哪一层?
  9. iOS小技能:模拟鼠标点击(针对Mac)
  10. Ubuntu 安装 QEMU
  11. 计算机维修培训教材,计算机芯片级维修--芯片级维修培训教材.doc
  12. 戴尔服务器装完系统没启动项,华硕电脑重装系统后没有硬盘启动项是什么原因?...
  13. 2021-10-28项目集管理PgMP:刷新项目管理思维与架构︱项目管理者联盟联合创始人宣晓锋
  14. zabbix server 配置
  15. 利用Matlab解决线性规划问题并绘制特定形状的空间曲面(约束区域的绘图)
  16. 5.pygame图片显示
  17. java,mysql,oracle出现科学记数法问题
  18. 九连环解法java版
  19. kill命令详解kill -9、kill -15区别
  20. Unity中在运行时获取AnimationClip中的关键帧信息

热门文章

  1. 全球6G技术大会总结报告
  2. 使用python-Django创建Web站点
  3. yum安装报错No URLs in mirrorlist
  4. Map 常用实现类对比
  5. 永磁同步电机偏差解耦与电流前馈解耦控制比较
  6. 杭州电子科技大学信息工程学院,计算机本科生考研情况很弱?
  7. Study_microblog笔记Part 13--日期与时间
  8. 人机交互论文导读——EarBuddy: Enabling On-Face Interaction via Wireless Earbuds
  9. 00后女生“云摆摊”两周赚1.5万,实体店转战线上真的能赚钱吗?
  10. 滴滴业务中台架构之道:来自技术总监的思考