找回密码
 立即注册

QQ登录

只需一步,快速开始

ZenosZeng 讲师达人认证 悬赏达人认证

超级版主

299

主题

7874

帖子

1万

积分

超级版主

Rank: 8Rank: 8

积分
13131

活字格认证圣诞拼拼乐微信认证勋章讲师达人元老葡萄悬赏达人

ZenosZeng 讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-10-24 19:18  /   查看:5923  /  回复:0
在Spread for Asp.Net 5.0中,可以通过设置ClientAutoCalculation 来控制公式是否自动计算,但是我们经常遇到设置ClientAutoCalculation = true之后,Sum(A1:C1)并没有自动计算,而A1+B1+C1会自动计算。造成该问题的原因是因为Sum公式只对单元格的CellType为数值类型的单元格进行求和运算,而A1+B1+C1这样的公式系统会进行隐式类型转换,将单元格的值转换为数值进行求和运算。

当我们给Spread设置数据源时,一定要注意数据源每列的数据类型一定要是能够进行算术运算的类型,下面代码中Sum(A1:C1) 只计算了A1和C1的值,因为B列的数据类型为String
  1.         protected void Page_Load(object sender, EventArgs e)
  2.         {
  3.             DataTable dt = new DataTable();
  4.             dt.Columns.Add("col1", typeof(int));
  5.             dt.Columns.Add("col2", typeof(string));
  6.             dt.Columns.Add("col3", typeof(int));
  7.             dt.Columns.Add("col4", typeof(int));

  8.             dt.Rows.Add(1, 2, 3, 4);
  9.             dt.Rows.Add(1, 2, 3, 4);
  10.             dt.Rows.Add(1, 2, 3, 4);
  11.             dt.Rows.Add(1, 2, 3, 4);
  12.             FpSpread1.ActiveSheetView.DataSource = dt;
  13.             FpSpread1.ClientAutoCalculation = true;

  14.             FpSpread1.ActiveSheetView.SetFormula(1, 3, "SUM(A1:C1)");
  15.             FpSpread1.ActiveSheetView.SetFormula(2, 3, "A2+B2+C3");

  16.         }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部