找回密码
 立即注册

QQ登录

只需一步,快速开始

luoyefeng

注册会员

17

主题

77

帖子

154

积分

注册会员

积分
154

活字格认证

luoyefeng
注册会员   /  发表于:2011-11-17 10:45  /   查看:10263  /  回复:11
如题,导入excel表,其中有sum公式,sheetview的自动计算功能已设置为true,导入的sum公式不会自动进行计算,要如何触发控件的自动计算功能?

11 个回复

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

回复 1# luoyefeng 的帖子

你好,我使用 Spread for WinForm 5.0 没有重现出你的问题,请问提供你使用的 Spread 版本信息。
回复 使用道具 举报
luoyefeng
注册会员   /  发表于:2011-11-17 10:57:00
板凳
也是5.0
回复 使用道具 举报
luoyefeng
注册会员   /  发表于:2011-11-17 10:59:00
地板
那有没有可以通过程序触发控件进行计算的功能,也就是能不能在我需要计算的时候调用一下自动计算的接口进行一次自动计算?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-11-17 11:10:00
5#
你好,可以调用 SheetView.RecalculateAll 方法 ,参考代码:

  1.   DialogResult dlg;
  2.   fpSpread1.ActiveSheet.SetValue(0, 0, 20);
  3.   fpSpread1.ActiveSheet.SetValue(0, 1, 10);
  4.   fpSpread1.ActiveSheet.SetFormula(3, 0, "SUM(A1,B1)");
  5.   fpSpread1.ActiveSheet.SetFormula(4, 0, "A1*B1");
  6.   dlg = MessageBox.Show("确定要重新计算所有公式?", "重计算所有", MessageBoxButtons.YesNo);
  7.   if (dlg == DialogResult.Yes)
  8.   {
  9.   fpSpread1.ActiveSheet.SetValue(0, 1, 100);
  10.   fpSpread1.ActiveSheet.RecalculateAll();
  11.   }

复制代码
回复 使用道具 举报
luoyefeng
注册会员   /  发表于:2011-11-17 11:57:00
6#
FpSpread控件本身有没有影响计算的属性?我用了RecalculateAll还是不行,必须要在公式包括的单元格中任意修改一下,公式才能计算
回复 使用道具 举报
luoyefeng
注册会员   /  发表于:2011-11-17 12:03:00
7#
刚刚发现导入的excel数据确实显示出来了,但感觉SheetView没有接收到一样。比如A1有个公式:SUM(A2:A3),A2有数100,A3无数据,导入后,A2显示100,但A1没有值。然后在A3录入200,A1计算值为200,然后把A2改为1,这时A1计算值为201。
这是什么原因?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-11-17 12:08:00
8#

回复 7# luoyefeng 的帖子

你好,不好意思,由于不清楚你对 Spread 的设置,所以我没有重现你的问题,能发个 Demo 到论坛上来吗?
回复 使用道具 举报
luoyefeng
注册会员   /  发表于:2011-11-17 12:24:00
9#
发demo太麻烦了。导入后跟踪发现单元格value值确实也设上了的,为什么计算时会忽略呢,可能有哪些属性会影响到?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-11-17 13:29:00
10#

回复 9# luoyefeng 的帖子

你好,可以把需要计算的列单元格类型设置成 DoubleCellType 进行尝试。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部