找回密码
 立即注册

QQ登录

只需一步,快速开始

6557

注册会员

6

主题

11

帖子

63

积分

注册会员

积分
63
  • 82

    金币

  • 6

    主题

  • 11

    帖子

6557
注册会员   /  发表于:2023-2-1 18:12  /   查看:3028  /  回复:3
26金币
Spread里面用formula给单元格设置了这个公式=IFNA(VLOOKUP(A1,Sheet2!A:B,2,FALSE),""),输出excel后值是#NAME?。然后excel里面双击单元格后可以正常显示结果。请问怎么解决

3 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-2-1 18:21:15
沙发
#NAME?的意思是不支持该公式名称,应该是spread webform不支持IFNA这个公式
回复 使用道具 举报
波波虎
注册会员   /  发表于:2023-5-21 13:23:20
板凳

下面是个人观点,不知道能不能解决你的问题。

我怀疑是IFNA和VLOOKUP函数没有注册到Spread.NET中。

在使用Spread.NET设置公式时,涉及到调用Excel内置函数,而Excel内置函数在.NET中不是默认可用的。如果在生成的表格中公式的结果为 #NAME?,则说明Spread.NET无法识别这个Excel内置函数。

因为在使用该公式之前,需要先将Excel内置函数注册到Spread.NET中。对于公式中用到的IFNA和VLOOKUP函数,可以通过在程序中添加以下代码,使用SpreadCalcFunction.RegisterGlobalFunction()方法将这两个函数注册到Spread.NET中:

// 注册IFNA和VLOOKUP函数FarPoint.CalcEngine.Functions.CommonFunctions.RegisterIfna();FarPoint.CalcEngine.Functions.LookupFunctions.RegisterVlookup();// 注册函数到Spread.NETFarPoint.Web.Spread.calcEngineUtility.RegisterGlobalFunction("IFNA", FarPoint.CalcEngine.Functions.CommonFunctions.IFNA);FarPoint.Web.Spread.calcEngineUtility.RegisterGlobalFunction("VLOOKUP", FarPoint.CalcEngine.Functions.LookupFunctions.Vlookup);

上述代码在ASP.NET应用程序中加载时进行调用即可。这样,在生成的表格中就可以正常使用IFNA和VLOOKUP函数了。

请注意,由于Spread.NET中不支持所有Excel内置函数,因此可能需要执行某些自定义函数。对于自定义函数,也可以使用SpreadCalcFunction.RegisterGlobalFunction()方法将其注册到Spread.NET中。


回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-5-22 10:35:08
地板
, 这个问题的具体原因是产品不支持IFNA,可以自定义一个同名函数即可
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部