找回密码
 立即注册

QQ登录

只需一步,快速开始

study1990
金牌服务用户   /  发表于:2014-1-14 16:03  /   查看:10862  /  回复:12

当excel行数比较多(现在测试的是多于124行)时,我们定义的公式计算结果显示“#NAME?”,并且保存报错(Operation is not valid due to the current state of the object.)。
比较少的时候,计算结果显示为0,这是正常的,保存也没问题。
对此问题论坛有出现过类似问题吗?有解决方法吗?

12 个回复

倒序浏览
study1990
金牌服务用户   /  发表于:2014-1-14 16:05:00
沙发
这是我们在客户那边测试出的问题,我们这边没有问题,所以demo先不上传。
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2014-1-14 17:45:00
板凳
回复 2楼study1990的帖子

Spread是那个版本的? 建议您把Excel文件提供一下。

我先定位定位。
回复 使用道具 举报
study1990
金牌服务用户   /  发表于:2014-1-15 09:00:00
地板
回复 3楼roger.wang的帖子


コード1.rar (13.64 KB, 下载次数: 3)
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2014-1-15 09:13:00
5#
回复 4楼study1990的帖子

早上好。
您提供的excel我测试了,有2点需要您的配合:
1 “我们定义的公式计算结果显示“#NAME?”“
   疑问: 这个在Excel还是导入后均是“#NAME?”,数据少的时候是0,是要我把Excel文件删除一部分吗? 我的理解是Excel和导入Spread后是一样的
2 并且保存报错(Operation is not valid due to the current state of the object.)。
  疑问:怎么保存? 保存为Excel吗?

以上两点,还麻烦您帮解释一下。
回复 使用道具 举报
study1990
金牌服务用户   /  发表于:2014-1-15 10:04:00
6#
回复 5楼roger.wang的帖子

1、复制个副本,在excel删除过多的行,再导入。
2、保存spread到数据库。
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2014-1-15 10:09:00
7#
回复 6楼study1990的帖子

1 删除为100行的数据,导入同上面的,未出现你说的可以为0的。
2 Spread保存为数据库,在1问题解决了再看这个,您可把写入数据库关键代码给抽取出来。

我的操作方法是:通过Spread Designer, Open File, 打开Excel。 不知道您通过什么方法?
回复 使用道具 举报
study1990
金牌服务用户   /  发表于:2014-1-15 16:09:00
8#
1、spread加入了我们定义的公式,所以可以计算出0;
2、这边是将spread序列化后存入数据库的。

保存失败的原因上午查出来了,网上说是IIS的问题,
在配置文件里加条设置就好了。
  1. <appSettings>
  2.     <add key="aspnet:MaxHttpCollectionKeys" value="5000" />
  3. </appSettings>
复制代码
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2014-1-15 17:13:00
9#
回复 8楼study1990的帖子

谢谢您的分享。

现在还有1个问题,即Excel少于124行,会显示0, 我把您上传的附件删除了一些数据, 未自动计算--“#NAME?”, 需要做什么特殊处理吗?
回复 使用道具 举报
study1990
金牌服务用户   /  发表于:2014-1-16 08:45:00
10#
回复 9楼roger.wang的帖子

就是加入自定义的公式集,默认返回值为0,就计算出来了。

  1. FarPoint.Web.Spread.Model.DefaultSheetDataModel dataModel = null;
  2. dataModel = (FarPoint.Web.Spread.Model.DefaultSheetDataModel)spread.ActiveSheetView.DataModel;
  3. dataModel.ClearCustomFunctions();
  4. Formula formula = FormulaNamesFactory.GetFormula();    //获取自定义公式;Formula继承FarPoint.CalcEngine.FunctionInfo
  5. dataModel.AddCustomFunction(formula);
  6. spread.ActiveSheetView.DataModel = dataModel;
复制代码


那是我们自定义的公式,你算不出来的。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部