找回密码
 立即注册

QQ登录

只需一步,快速开始

michael

银牌会员

22

主题

57

帖子

3974

积分

银牌会员

积分
3974

活字格认证

michael
银牌会员   /  发表于:2011-10-15 11:22  /   查看:11357  /  回复:18
想实现这样的功能
1 某个单元格只能输入3位小数 不足三位小数自动补零

我设置了DoubleCellType的DecimalDigits=3 但是不能自动补零
设置NumberFormatInfo的NumberDecimalDigits=3也不行

2 有三个单元格 我输入第一个格的值之后 根据公式算出第二个格的值 然后根据第二个值判断第三个格显示什么内容
如何实现 困惑了很久了。。请教高手了。

18 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2011-10-17 10:22:00
沙发

回复 1# michael 的帖子

你好:
1. 可以设置 DoubleCellType 的 FixedPoint 属性值,代码如下:
  1. FarPoint.Web.Spread.DoubleCellType dblc = new FarPoint.Web.Spread.DoubleCellType();
  2. dblc.DecimalDigits = 3;
  3. dblc.FixedPoint = true;
  4. this.FpSpread1.ActiveSheetView.Cells[0, 0].CellType = dblc;
  5. this.FpSpread1.ActiveSheetView.Cells[0, 0].Value = 435.98;
复制代码
2.你的意思是要输入第一个单元格值后即时显示第二个和第三个单元格的计算信息吗?请添加如下设置 :
  1. this.FpSpread1.ClientAutoCalculation = true;
复制代码
回复 使用道具 举报
michael
银牌会员   /  发表于:2011-10-20 22:18:00
板凳
1.FixedPoint =3 设置之后 页面初始化的时候能显示三位小数 但是我想在单元格录入结束后自动四舍五入至三位 类似于验证的功能 比如说输入3 会自动变成3.000 输入3.5555自动变成3.6

2.设置this.FpSpread1.ClientAutoCalculation = true;但是输入第一个单元格的值只能改变第二个格的值 第三个格的公式不起作用
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-10-21 18:36:00
地板
我的Spread种有4列A/B/C/D,C1的公式=Sum(A1:B1),D1=Sum(A1:C1);然后设置ClientAutoCalculation  = true,在A1中输入值之后C1和D1都能自动计算,不知你设置的是什么样的公式

同时,能否结合http://gcdn.grapecity.com/showtopic-2353.html做一个Demo发来看看
回复 使用道具 举报
michael
银牌会员   /  发表于:2011-10-21 22:45:00
5#

附件中的是我做的例子 请高手指点

公式不起作用 应该怎么修改
回复 使用道具 举报
michael
银牌会员   /  发表于:2011-10-21 22:46:00
6#
附件传不了 代码是这样写的[code]        DataTable dt = new DataTable();
        dt.Columns.Add("列1");
        dt.Columns.Add("列2");
        dt.Columns.Add("列3");
        dt.Columns.Add("列4");
        DataRow dr = dt.NewRow();
        dr["列1"] = 11.000;
        dr["列2"] = 2;
        dr["列3"] = 3;
        dt.Rows.Add(dr);
        FpSpread1.DataSource = dt;
        FpSpread1.DataBind();
        FpSpread1.ClientAutoCalculation = true;
        FpSpread1.CommandBar.Visible = true;

        FpSpread1.ActiveSheetView.SetFormula(0, 3, "SUM(A1:A3)");[/code]
公式不起作用 该怎么修改 请教高手了
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-10-24 19:19:00
7#
你好,仅当你的数据源中的计算内容为数值型时 SUM(A1:C1) 才会起到作用,代码如下:

  1.             DataTable dt = new DataTable();
  2.             dt.Columns.Add("列1", typeof(int));
  3.             dt.Columns.Add("列2", typeof(int));
  4.             dt.Columns.Add("列3", typeof(int));
  5.             dt.Columns.Add("列4", typeof(int));

  6.             DataRow dr = dt.NewRow();
  7.             dr["列1"] = 11.000;
  8.             dr["列2"] = 2;
  9.             dr["列3"] = 3;
  10.             dt.Rows.Add(dr);
  11.             FpSpread1.DataSource = dt;

  12.             FpSpread1.ActiveSheetView.SetFormula(0, 3, "SUM(A1:C1)");
复制代码
如果不设置数据源计算内容为数值类型,那么可以通过设置;

  1. FpSpread1.ActiveSheetView.SetFormula(0, 3, "A1+B1+C1");
复制代码
实现计算
回复 使用道具 举报
michael
银牌会员   /  发表于:2011-10-26 22:16:00
8#
我可不可以理解成有数据源绑定的时候 用函数的区域(A1:A3)就不好用了,因为我的数据源绑定后是要对一行进行sum的 通过数据源能设置行的格式为数值类型吗(比如typeof(int))。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-10-27 16:30:00
9#

回复 8# michael 的帖子

你好,如果想使用 SUM(A1:C1) 形式去求和,那么参与计算的参数类型只能是 数值型。
如果想通过数据源设置行的数据类型都为数值型,恐怕行不通,但可以把参加计算的列的单元格类型设置为数值型。
有一个建议:
绑定数据源之前,添加一行代码:
  1. //设置后 Spread 将不会自动匹配数据源单元格类型
  2. this.FpSpread1.Sheets[0].DataAutoCellTypes = false;
  3. //再执行 SUM
复制代码
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-10-27 17:56:00
10#

回复 8# michael 的帖子

另外,SUM 有多种传参方式,例如:

  1. SUM(A1,B7,C11)
  2. SUM(A1:A9)
  3. SUM(A2:A14,B2:B18,D12:D30)
  4. SUM(R1C2,R3C5,R6C2,R1C7)
  5. SUM(95,89,73,87,85,76,100,96,96)
复制代码
可以根据实际情况情况进行选择.
详细内容,可以参考 公式指南-SUM 章节
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部