找回密码
 立即注册

QQ登录

只需一步,快速开始

zhata
论坛元老   /  发表于:2015-5-11 16:37  /   查看:7083  /  回复:5
spread 5.0中有没有类似于Excel中:sheet1.Evaluate(A1*10) 的函数。现在要计算公式:A1*10,只能将公式先赋值给Cell。例如: Cell.Formula = "A1*10",然后再从Cell.Value中取值。

5 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2015-5-11 18:01:00
沙发
回复 1楼zhata的帖子

感谢你对该问题的反馈。
根据我的理解,你需要使用自定义公式。
你可以参考spread产品文档:
Creating and Using a Custom Function章节。
Spread WinForm
文档地址:
32位系统:C:\Program Files\ComponentOne\Spread Studio 8\Docs\Windows Forms
64位系统:C:\Program Files (x86)\ComponentOne\Spread Studio 8\Docs\Windows Forms
文档名称:FarPoint.Win.Spread.8.0.chm
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
zhata
论坛元老   /  发表于:2015-5-11 18:34:00
板凳
那个帮助文档资料运行会出错,不知道需要安装什么运行环境。

确实是使用自定义公式,例如:
Me.FpSpread1.ActiveSheet.AddCustomName("GS", "A1*10", 0, 0)
Me.FpSpread1.ActiveSheet.GetCustomName("GS", 0, 0)的返回值是:A1*10
Me.FpSpread1.ActiveSheet.GetCustomName("GS")的返回值是:FarPoint.CalcEngine.Expression
但是我需要的是A1*10的值,不知道怎样计算出FarPoint.CalcEngine.Expression的值。
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-5-12 09:53:00
地板
回复 3楼zhata的帖子

举个例子来说明如何使用自定义公式。
第一步:创建自定义公式。需要继承FunctionInfo。
代码参考:
  1. public class CubeFunctionInfo : FunctionInfo
  2. {
  3. public override string Name { get { return "CUBE"; } }
  4. public override int MinArgs { get { return 1; } }
  5. public override int MaxArgs { get { return 1; } }
  6. public override object Evaluate (object[] args)
  7. {
  8. double num = CalcConvert.ToDouble(args[0]);
  9. return num * num * num;
  10. }
  11. }
复制代码

第二步:登记自定义公式,使用AddCustomFunction方法。
  1. spread.ActiveSheet.AddCustomFunction(new CubeFunctionInfo());
复制代码


第三步:设置自定义公式,通过SetFormula方法。
  1. spread.ActiveSheet.SetFormula(0, 0, "CUBE(5)"); spread.ActiveSheet.SetFormula(1, 0, "XOR(FALSE,FALSE)"); spread.ActiveSheet.SetFormula(1, 1, "XOR(TRUE,FALSE)");
复制代码
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
zhata
论坛元老   /  发表于:2015-5-12 10:42:00
5#
上面回答不是我要的,该回答说的是怎么构造一个自定义公式以及在sheet中如何使用。我就想知道自定义公式的"值"是多少。
例如:
Me.FpSpread1.ActiveSheet.AddCustomName("GS", "$A$1*10", 0, 0)
Me.FpSpread1.ActiveSheet.GetCustomName("GS", 0, 0)的返回值是:$A$1*10
Me.FpSpread1.ActiveSheet.GetCustomName("GS")的返回值是:FarPoint.CalcEngine.Expression
但是我需要的是$A$1*10的值,不知道怎样计算出FarPoint.CalcEngine.Expression的值。
Cell中不需要引用自定义公式,只需要知道当$A$1值改变之后,GS的值是多少,也就是$A$1*10的值是多少。(注:在整个sheet中没有单元格引用到该公式。)
就像Excel中:sheet1.Evaluate($A$1*10) 或sheet1.Evaluate(GS) 的函数一样,直接能把该表达式的值算出来,不一定要在sheet中使用到它。Me.FpSpread1.ActiveSheet.GetCustomName("GS")的返回值是:FarPoint.CalcEngine.Expression ,该值是表达式的解析结构,我就想知道它的"值"是多少。
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-5-26 09:47:00
6#
回复 5楼zhata的帖子

很抱歉回复晚了。
对于你的问题,在spread5.0下没有找到合适的接口。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部