找回密码
 立即注册

QQ登录

只需一步,快速开始

EplanningSoft
初级会员   /  发表于:2020-10-10 17:14:29
11#
Richard.Ma 发表于 2020-10-10 16:58
关于第二个问题,我是用spreadjs 直接保存为excel文件不会出现问题
使用GCEXCEL在后台用下面的代码加载jso ...

后台传输使用的直接就是一个json串,不是从文档里读取的,而且spread.OpenExcel方法,在后台使用,就只能通过Exporter先把json串转成stream,再用spread打开。
后台处理数据时,是不需要再导出到Excel的,直接用fpspead打开报表,获取单元格上面的数据就可以了,所以上面的数据一旦计算不出来,后续逻辑就无法正常进行。
你那边有其他方法吗?
回复 使用道具 举报
EplanningSoft
初级会员   /  发表于:2020-10-10 17:16:36
12#
Richard.Ma 发表于 2020-10-10 16:58
关于第二个问题,我是用spreadjs 直接保存为excel文件不会出现问题
使用GCEXCEL在后台用下面的代码加载jso ...

GrapeCity.Spread.Sheets.ExcelIO.Exporter ,也是你们的控件
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-10-10 17:46:33
13#
本帖最后由 Richard.Ma 于 2020-10-10 18:27 编辑

了解了,GrapeCity.Spread.Sheets.ExcelIO.Exporter这个是Spread9中的组件,我看你用Exporter的SaveExcel方法,这个可以直接保存为excel文件的,参考
https://help.grapecity.com/spread/SpreadJSWeb/excelexample.html
你可以尝试试一下这样保存的xlsx文件会不会出错

FpSpread对数组公式和动态数组支持不是很全面,因此再用这个控件来加载数据流并导出的xlsx文件中会多出一个“@”符号,导致错误。

另外的建议是:
升级到新版本SpreadJS,可以直接导出excel文件。
或者另外使用刚才提到的GCEXCEL来在后台直接做导出即可,附件中就是我用10楼的代码导出的excel文件,可以正常直接显示结果(在office365中测试)


test.xlsx

19.96 KB, 下载次数: 110

回复 使用道具 举报
EplanningSoft
初级会员   /  发表于:2020-10-10 20:00:55
14#
Richard.Ma 发表于 2020-10-10 17:46
了解了,GrapeCity.Spread.Sheets.ExcelIO.Exporter这个是Spread9中的组件,我看你用Exporter的SaveExcel方 ...

我这边的实际需求是,我不导出来,只是在后台通过fpspread打开即可,能获取上面的公式单元格数据进行使用。现在的Exporter转stream写法,也是为了后面的 spread.OpenExcel 用的,也就是说,我的最终目的,就是能在程序中获取到这些有数据函数公式的单元格值,这样讲能理解不?
升级新版本是后续的事情的了,眼下比较紧急的,就是现有的版本上,用最快时间找到一个方法,可以让获取到这些值
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-10-10 23:50:34
15#
好的,这个问题目前应该是出在fpspread上面,周一我会再给您验证一下看看有没有其他办法
回复 使用道具 举报
EplanningSoft
初级会员   /  发表于:2020-10-13 10:07:49
16#
Richard.Ma 发表于 2020-10-10 23:50
好的,这个问题目前应该是出在fpspread上面,周一我会再给您验证一下看看有没有其他办法

有其他解决方法吗?
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-10-13 12:31:07
17#
在spread.NET V13上做了测试,重新设置FormulaArray后可以正常显示,因为你那边使用的是老版本,你还需要测试下看看这样是否有效

  1.             for (int r = 0; r < 200; r++)
  2.             {
  3.                 for (int c = 0; c < 200; c++)
  4.                 {
  5.                     if (!String.IsNullOrEmpty(fpSpread1.Sheets[1].Cells[r, c].FormulaArray))
  6.                     {
  7.                         fpSpread1.Sheets[1].Cells[r, c].FormulaArray = fpSpread1.Sheets[1].Cells[r, c].FormulaArray;
  8.                     }
  9.                 }
  10.             }
复制代码
回复 使用道具 举报
EplanningSoft
初级会员   /  发表于:2020-10-13 16:32:22
18#
本帖最后由 EplanningSoft 于 2020-10-13 16:41 编辑
Richard.Ma 发表于 2020-10-13 12:31
在spread.NET V13上做了测试,重新设置FormulaArray后可以正常显示,因为你那边使用的是老版本,你还需要测 ...

我这边没有FormulaArray的属性。。。只有Formula,用了没效果 image.png320825194.png
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-10-13 16:51:38
19#
我在文档中确认了一下,FormulaArray是在Spread WinformsV11时才支持的。更早的版本不支持。所以老版本目前确实没有其他的办法了
回复 使用道具 举报
EplanningSoft
初级会员   /  发表于:2020-10-13 18:41:52
20#
Richard.Ma 发表于 2020-10-13 16:51
我在文档中确认了一下,FormulaArray是在Spread WinformsV11时才支持的。更早的版本不支持。所以老版本目前 ...

那像这个数组函数公式,能换成其他函数实现不?用我们现在V8版本支持的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部