找回密码
 立即注册

QQ登录

只需一步,快速开始

dzf
金牌服务用户   /  发表于:2017-5-12 17:08  /   查看:3735  /  回复:7
fpspread 不画在UI上,而是用代码创建,然后调整cell上面的公式,然后保存,再打开时,发现公式没有设置上去。但是对ui上显示的fpspread控件做上述操作,可以成功设置公式?

7 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-5-12 18:08:56
沙发
初始化SPread然后导入一个excel,修改公式,导出。
是这样一个流程吗?
回复 使用道具 举报
dzf
金牌服务用户   /  发表于:2017-5-15 12:03:21
板凳
修改公式,然后保存为xml文件。如果spread控件是界面上可见的,没问题,如果是代码new出的不可见对象,修改无效。
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-5-15 18:26:10
地板
没有重现您的问题 我新建一个公式,保存xml。 new 一个spread 加载公式,修改,保存新的xml。   然后加载新的xml,公式是新的。
  1.         public Form16()
  2.         {
  3.             InitializeComponent();

  4.             var chart = fpSpread1.ActiveSheet.Charts[0];
  5.             fpSpread1.ActiveSheet.Cells[0, 0].Formula = "A2";
  6.             fpSpread1.Save(@"D:\abx.xml", false);
  7.         }

  8.         private void button1_Click(object sender, EventArgs e)
  9.         {
  10.             FarPoint.Win.Spread.FpSpread sp = new FarPoint.Win.Spread.FpSpread();
  11.             sp.Open(@"D:\abx.xml");

  12.             sp.ActiveSheet.Cells[0, 0].Formula = "A3";

  13.             sp.Save(@"D:\abx1.xml", false);
  14.         }

  15.         private void button2_Click(object sender, EventArgs e)
  16.         {
  17.             fpSpread1.Open(@"D:\abx1.xml");
  18.         }
复制代码

回复 使用道具 举报
dzf
金牌服务用户   /  发表于:2017-5-16 10:07:25
5#
FpSpread recalFpSpread1  = new FpSpread();
然后 recalFpSpread1 加载多个页签的XML格式报表文件,
然后下面循环处理多个页
foreach (SheetView cursheet in recalFpSpread1.Sheets)
{
              
        recalFpSpread1.ActiveSheet = cursheet;  


    FarPoint.Win.Spread.Cell cell = cursheet.Cells[0, 0];
                                cell.Formula = newFormula;
}
这样循环多个sheet,就有些公式丢了。

            
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-5-16 11:29:38
6#
可否提供个完成可以重现的Demo,我这里按照您的代码,测试还是没有重现。
  1.         private void button1_Click(object sender, EventArgs e)
  2.         {
  3.             FarPoint.Win.Spread.FpSpread sp = new FarPoint.Win.Spread.FpSpread();
  4.             sp.Open(@"D:\abx.xml");

  5.             foreach (FarPoint.Win.Spread.SheetView cursheet in sp.Sheets)
  6.             {
  7.                 sp.ActiveSheet = cursheet;
  8.                 FarPoint.Win.Spread.Cell cell = cursheet.Cells[0, 0];
  9.                 cell.Formula = "A3";
  10.             }

  11.             sp.Save(@"D:\abx1.xml", false);
  12.         }
复制代码
回复 使用道具 举报
dzf
金牌服务用户   /  发表于:2017-5-16 13:52:10
7#
dexteryao 发表于 2017-5-16 11:29
可否提供个完成可以重现的Demo,我这里按照您的代码,测试还是没有重现。

找到原因了,我的代码量较大,是代码处理两张新旧报表复制值与公式过程逻辑写错了,抱歉。不是控件的原因。
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-5-16 16:25:11
8#
问题解决就好
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部