找回密码
 立即注册

QQ登录

只需一步,快速开始

xiwu

中级会员

97

主题

445

帖子

910

积分

中级会员

积分
910

活字格认证

xiwu
中级会员   /  发表于:2010-11-6 14:31  /   查看:7698  /  回复:8
问题又来了,spread可能对单元格添加公式,但是spread自带的公式并不能满足所有需求,我现在想:B列单元格的值=函数(A列对应单元格的值),要求:A列单元格输入一个值,B列对应的单元格自动显示计算出的结果,如果A列单元格没有值,B列对应单元格不显示,请问在spread如何实现,

8 个回复

倒序浏览
gw0506
超级版主   /  发表于:2010-11-8 09:20:00
沙发
Spread中单元格的公司允许自定义,例如:
  1. FpSpread1.Sheets[0].Cells[1, 1].Formula = "C1+D1";
复制代码
您可以根据自己的要求,自定义公式。
回复 使用道具 举报
xiwu
中级会员   /  发表于:2010-11-8 13:32:00
板凳
不太明白,FpSpread1.Sheets[0].Cells[1, 1].Formula = Myfunction(A1,B1,.....);Myfunction为自定义函数。另外,请教有没有fpSpread的QQ交流群吗?
回复 使用道具 举报
gw0506
超级版主   /  发表于:2010-11-8 15:04:00
地板
就是说,你可以使用Spread提供的公式,或者自定义个函数。
您不明白的是哪里?

我们不提供Spread的qq群。GCDN是Spread唯一的中文技术论坛。
回复 使用道具 举报
xiwu
中级会员   /  发表于:2010-11-10 10:52:00
5#
我不明白如何使用自定义的函数,能否举例说明一下,非常感谢!例如:下面是我的函数 /// <summary> /// 功能:根据三角形三边长,计算三角形面积 /// 利用两点之间距离公式,求出三角形的三边长a,b,c后,令p = (a+b+c)/2。再套入以下公式就可以求出三角形的面积S :S = sqrt(p*(p-a)*(p-b)*(p-c)) /// </summary> /// <param name="a"></param>边长 /// <param name="b"></param>边长 /// <param name="c"></param>边长 /// <returns></returns> public static double getAreaOfTriangleBySidelength(double a, double b, double c) { double p = (a + b + c) / 2.0; double s = Math.Sqrt(p * (p - a) * (p - b) * (p - c)); return s; }
回复 使用道具 举报
gw0506
超级版主   /  发表于:2010-11-10 15:53:00
6#
例子如下:

创建自定义函数

  1.     public class GetAreaOfTriangleBySidelength : FarPoint.CalcEngine.FunctionInfo
  2.     {

  3.         public override object Evaluate(object[] args)
  4.         {
  5.             double a = CalcConvert.ToDouble(args[0]);
  6.             double b = CalcConvert.ToDouble(args[1]);
  7.             double c = CalcConvert.ToDouble(args[2]);

  8.             double p = (a + b + c) / 2.0;
  9.             double s = Math.Sqrt(p * (p - a) * (p - b) * (p - c));
  10.             return s;
  11.         }

  12.         public override int MaxArgs
  13.         {
  14.             get { return int.MaxValue; }
  15.         }

  16.         public override int MinArgs
  17.         {
  18.             get { return 0; }
  19.         }

  20.         public override string Name
  21.         {
  22.             get { return &quot;AreaOfTriangle&quot;; }
  23.         }
  24.     }
复制代码
使用自定义函数

  1.             this.fpSpread1.ActiveSheet.AddCustomFunction(new GetAreaOfTriangleBySidelength());

  2.             this.fpSpread1.ActiveSheet.Cells[0, 0].Value = 3;
  3.             this.fpSpread1.ActiveSheet.Cells[1, 0].Value = 4;
  4.             this.fpSpread1.ActiveSheet.Cells[2, 0].Value = 5;

  5.             this.fpSpread1.ActiveSheet.SetFormula(3, 3, &quot;AreaOfTriangle(A1,A2,A3)&quot;);
复制代码
回复 使用道具 举报
xiwu
中级会员   /  发表于:2010-11-10 16:23:00
7#
非常感谢你的耐心解答
回复 使用道具 举报
gw0506
超级版主   /  发表于:2010-11-10 16:28:00
8#
应该的,不用客气。
你参加我们的问卷调查了么?说不定拿个大奖,送一套Spread而且带服务。呵呵~
回复 使用道具 举报
xiwu
中级会员   /  发表于:2010-11-10 19:28:00
9#
是吗??哪必须参加一下,,正想要一套spread
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部