找回密码
 立即注册

QQ登录

只需一步,快速开始

iceman

社区贡献组

270

主题

1万

帖子

1万

积分

社区贡献组

积分
19311

活字格认证微信认证勋章元老葡萄

iceman
社区贡献组   /  发表于:2014-8-1 10:18  /   查看:6724  /  回复:2
问题描述:如题
问题解答:创建中转 WorkSheet 分析输入信息,得到 Expression 获取单元格信息。
关键代码:     
  1. public static Cell GetCells(this GcSpreadSheet spread, string formula)
  2.         {
  3.             var workbook = spread.Workbook;
  4.             var dummySheet = workbook.Sheets.FirstOrDefault((s) => s.Name == DummyWorksheetName);
  5.             if (dummySheet == null)
  6.             {
  7.                 workbook.Sheets.Add(dummySheet = new Worksheet(DummyWorksheetName)
  8.                 {
  9.                     Visible = false
  10.                 });
  11.             }
  12.             var eval = dummySheet as ICalcEvaluator;
  13.             System.Diagnostics.Debug.Assert(eval != null);

  14.             var expr = eval.Formula2Expression(formula, 0, 0);
  15.             if (expr is CalcExternalCellExpression || expr is CalcExternalRangeExpression)
  16.             {
  17.                 var extExpr = expr as CalcExternalExpression;
  18.                 var targetSheet = extExpr.Source as Worksheet;
  19.                 if (targetSheet != null)
  20.                 {
  21.                     var extId = extExpr.GetId(0, 0) as CalcExternalIdentity;
  22.                     var local = extId.ConvertToLocal();
  23.                     return targetSheet.Cells[local.ToString()];
  24.                 }
  25.             }

  26.             //TODO: check all other expression and find by yourselves.
  27.             throw new NotImplementedException();
  28.         }
复制代码


示例下载:点击下载

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

2 个回复

倒序浏览
cccc
金牌服务用户   /  发表于:2023-10-20 11:05:08
沙发
请问有没有winfrom示例?
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-10-20 14:05:06
板凳
如果你的需求是通过单元格地址字符串来获取到单元格对象信息的话,在新版的winfom开发包中可以直接这样写

  1. var range=_fpSpread.AsWorkbook().ActiveSheet.Range("Sheet1!A1:C1");
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部