figoyu 发表于 2015-4-26 09:54:00

Spread有没有提供类似于excel的命名单元格区域的功能?

比如:给B2:B10单元格区域命个名name1, 然后在A列插入一列后,name1所代表的单元格区域就是C2:C10

Helen 发表于 2015-4-27 10:34:00

回复 1楼figoyu的帖子

FarPoint.Web.Spread.Model.ICustomNameSupport cns;
cns = (FarPoint.Web.Spread.Model.ICustomNameSupport)FpSpread1.ActiveSheetView.DataModel;
cns.AddCustomName("ALPHA", new RangeExpression(1,1,2,2));
Expression a = cns.GetCustomName("ALPHA");

figoyu 发表于 2015-4-27 11:41:00

这样做不行,在插入1列1行后,ALPHA代表的命名单元格区域还是原来的区域,没变化啊

figoyu 发表于 2015-4-27 12:31:00

回复 2楼Helen的帖子

这样做不行,在插入1列1行后,ALPHA代表的命名单元格区域还是原来的区域,没变化啊

Helen 发表于 2015-4-27 14:21:00

回复 4楼figoyu的帖子

DefaultSheetDataModel dtModel = (FpSpread1.Sheets.DataModel as DefaultSheetDataModel);
            dtModel.AddCustomName("DataArea", new ExternalRangeExpression(dtModel, 1, 1, 2, 2));
            FpSpread1.Columns.Add(0, 1);
            FpSpread1.Rows.Add(0, 1);
            FpSpread1.Columns.Add(0, 1);
            FpSpread1.Rows.Add(0, 1);

            var customnames = dtModel.GetCustomNameEnumerator();
            while (customnames.MoveNext())
            {
                ExternalRangeExpression expr = FpSpread1.Sheets.GetCustomName(customnames.Current.ToString()) as ExternalRangeExpression;
            }

figoyu 发表于 2015-4-27 14:23:00

回复 2楼Helen的帖子

还有,请问一下,在插入一行后,需要复制前一行的公式,怎么复制啊,并且要求公式中的单元格区域相对引用。

figoyu 发表于 2015-4-27 14:39:00

回复 5楼Helen的帖子

感谢,这个达到要求了,公式那个怎么复制呢?

Helen 发表于 2015-4-27 14:40:00

回复 6楼figoyu的帖子

您好!
您可以通过5#楼的回帖代码示例,得到的expr.Row/Column都是插入后的实际行列。根据这个索引,您可以调用Cell上面的Formula取得您想要的每个单元格的公式或者Row上面的Formula取得您在行上的公式设置。
谢谢!

figoyu 发表于 2015-4-27 17:24:00

回复 8楼Helen的帖子

可能我没描述清楚,我的意思像excel那样拖拽一行,使用复制单元格方式,可以把公式复制下来,对应的公式里面的单元格引用也实现了相对引用

iceman 发表于 2015-4-28 12:08:00

回复 9楼figoyu的帖子

你好,
我对这个问题的理解是,复制公式,同时希望改变公式所计算的单元格范围。如果我的理解是正确的方法如下:

      protected void Page_Load(object sender, EventArgs e)
      {
            if (IsPostBack)
            {
                return;
            }

            this.FpSpread1.ActiveSheetView.Cells.Formula = "SUM(A1:B1)";



      }

      protected void Button1_Click(object sender, EventArgs e)
      {
            FarPoint.Web.Spread.Model.DefaultSheetDataModel dm = (FarPoint.Web.Spread.Model.DefaultSheetDataModel)FpSpread1.ActiveSheetView.DataModel;
            dm.Copy(0, 2, 1,2, 1, 1);



如果我理解的有偏差,请及时指出。

谢谢
页: [1] 2
查看完整版本: Spread有没有提供类似于excel的命名单元格区域的功能?