找回密码
 立即注册

QQ登录

只需一步,快速开始

figoyu
金牌服务用户   /  发表于:2015-4-26 09:54  /   查看:10171  /  回复:10
比如:给B2:B10单元格区域命个名name1, 然后在A列插入一列后,name1所代表的单元格区域就是C2:C10

10 个回复

倒序浏览
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
5#
回复 4楼figoyu的帖子
  1. DefaultSheetDataModel dtModel = (FpSpread1.Sheets[0].DataModel as DefaultSheetDataModel);
  2.             dtModel.AddCustomName("DataArea", new ExternalRangeExpression(dtModel, 1, 1, 2, 2));
  3.             FpSpread1.Columns.Add(0, 1);
  4.             FpSpread1.Rows.Add(0, 1);
  5.             FpSpread1.Columns.Add(0, 1);
  6.             FpSpread1.Rows.Add(0, 1);

  7.             var customnames = dtModel.GetCustomNameEnumerator();
  8.             while (customnames.MoveNext())
  9.             {
  10.                 ExternalRangeExpression expr = FpSpread1.Sheets[0].GetCustomName(customnames.Current.ToString()) as ExternalRangeExpression;
  11.             }
复制代码
回复 使用道具 举报
figoyu
金牌服务用户   /  发表于:2015-4-27 14:23:00
6#
回复 2楼Helen的帖子

还有,请问一下,在插入一行后,需要复制前一行的公式,怎么复制啊,并且要求公式中的单元格区域相对引用。
回复 使用道具 举报
figoyu
金牌服务用户   /  发表于:2015-4-27 14:39:00
7#
回复 5楼Helen的帖子

感谢,这个达到要求了,公式那个怎么复制呢?
回复 使用道具 举报
Helen
高级会员   /  发表于:2015-4-27 14:40:00
8#
回复 6楼figoyu的帖子

您好!
您可以通过5#楼的回帖代码示例,得到的expr.Row/Column都是插入后的实际行列。根据这个索引,您可以调用Cell上面的Formula取得您想要的每个单元格的公式或者Row上面的Formula取得您在行上的公式设置。
谢谢!
回复 使用道具 举报
figoyu
金牌服务用户   /  发表于:2015-4-27 17:24:00
9#
回复 8楼Helen的帖子

可能我没描述清楚,我的意思像excel那样拖拽一行,使用复制单元格方式,可以把公式复制下来,对应的公式里面的单元格引用也实现了相对引用
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-4-28 12:08:00
10#
回复 9楼figoyu的帖子

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

  1.         protected void Page_Load(object sender, EventArgs e)
  2.         {
  3.             if (IsPostBack)
  4.             {
  5.                 return;
  6.             }

  7.             this.FpSpread1.ActiveSheetView.Cells[0, 2].Formula = "SUM(A1:B1)";



  8.         }

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

复制代码


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

谢谢
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部