找回密码
 立即注册

QQ登录

只需一步,快速开始

EplanningSoft

初级会员

15

主题

73

帖子

210

积分

初级会员

积分
210
EplanningSoft
初级会员   /  发表于:2020-10-9 16:11  /   查看:13031  /  回复:20
1金币
通过FarPoint控件(v8.4)导出Excel时,报表中的数组函数不计算,有没有什么方法可以实现数组函数的计算?
在spreadjs中是可以计算出来的。
image.png63415526.png
导出到Excel后,没有计算-值是#VALUE,需要手动Shift+Ctrl+Enter才可以,但实际应用中,应导出跟界面报表一样的数据才对,不能让客户一个一个单元格再去按键操作
image.png364361266.png
附件中用demo的json

Array-json.zip

671.1 KB, 下载次数: 1368

20 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-10-9 16:24:07
沙发
本帖最后由 Richard.Ma 于 2020-10-9 16:25 编辑

你好,我看到你附件中放的是一个json内容的文件。这个是使用Spreadjs时导出的吗, 这个文件是无法支持.NET平台来导入使用的

你目前是要用Spread Asp.net还是其他的开发平台呢,
回复 使用道具 举报
EplanningSoft
初级会员   /  发表于:2020-10-9 16:57:41
板凳
Richard.Ma 发表于 2020-10-9 16:24
你好,我看到你附件中放的是一个json内容的文件。这个是使用Spreadjs时导出的吗, 这个文件是无法支持.NET ...

在后台使用FarPoint控件获取这个json,来导出到Excel
FpSpread spread = new FpSpread();

Exporter exporter = new Exporter(json);
var stream = new MemoryStream();
exporter.SaveExcel(stream, GrapeCity.Windows.SpreadSheet.Data.ExcelFileFormat.XLSX);
stream.Seek(0, SeekOrigin.Begin);

spread.OpenExcel(stream);
spread.SaveExcel(saveFileName, FarPoint.Excel.ExcelSaveFlags.UseOOXMLFormat);

这样能明白吗??
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-10-9 17:24:54
地板
本帖最后由 Richard.Ma 于 2020-10-9 17:42 编辑

了解了,我看到您这边是使用GCExcel来做转换的,理论上转换后通过Spread保存的文件在Excel中是可以自动计算的。你可以将转换后的文件发过来,我用office365测试一下看看
你提到的Ctrl + Shift + enter这个是在Office365之前的版本里面确实是要这样操作的,请参考微软的文档。里面有同样的公式在不同版本的excel中的操作
https://support.microsoft.com/zh ... AFAAA=Microsoft_365
回复 使用道具 举报
EplanningSoft
初级会员   /  发表于:2020-10-9 18:05:48
5#
Richard.Ma 发表于 2020-10-9 17:24
了解了,我看到您这边是使用GCExcel来做转换的,理论上转换后通过Spread保存的文件在Excel中是可以自动计算 ...

我这边知道数组函数是要手动按键Ctrl + Shift + enter才生效,但是现在的使用场景,是从系统里面导出来的,在spreadjs中是能自动计算的,现有的数据,导出来后不计算了,这跟客户说不通的,

让客户再一个一个找到这些数组公式去手动按键,也不合适
现在是希望有一个解决方案,怎么样能在系统中进行处理,让导出的Excel是能自动计算


附件里是导出的excel文件

导出demo.zip

62.25 KB, 下载次数: 1192

回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-10-9 18:24:46
6#
我在office365中测试了一下,这个公式本身就有错误,即使按Ctrl + Shift + enter也无法计算得出。
以BF9为例,使用EXCEL显示错误步骤,在第一步就会报错

image.png985075073.png


回复 使用道具 举报
EplanningSoft
初级会员   /  发表于:2020-10-10 14:32:13
7#
Richard.Ma 发表于 2020-10-9 18:24
我在office365中测试了一下,这个公式本身就有错误,即使按Ctrl + Shift + enter也无法计算得出。
以BF9为 ...

公式在spreadjs里面可以正常计算的呀,而且导出到Excel中,我按Ctrl + Shift + enter也可以计算出结果
image.png334994811.png
你看我发起问题的第一个截图,就是spreadjs中的截图,也是有结果的
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-10-10 15:46:28
8#
我这边使用的是office365。发现了我这边出现错误的原因是直接用excel打开文件后,公式中会出现一个@符号,去除后可以显示和你那边一样正确的结果,且无需按Ctrl + Shift + Enter
image.png106166075.png

目前来看
1。是否按Ctrl + Shift + Enter是由office版本决定的,这个是excel软件内部的机制。无法通过其他办法改变,如果你这边的需求比较明确,建议让客户用office365打开。

2.刚才说到的那个多出来的@符号问题,我再用GCEXCEL再导出测试了一下看看是什么原因

回复 使用道具 举报
EplanningSoft
初级会员   /  发表于:2020-10-10 16:51:05
9#
Richard.Ma 发表于 2020-10-10 15:46
我这边使用的是office365。发现了我这边出现错误的原因是直接用excel打开文件后,公式中会出现一个@符号, ...

Excel版本使用是一个情况;
另外,我们这边还比较棘手的问题是,后台通过FarPoint解析打开报表,需要获取到上面的数据 进行保存处理,现在后台FarPoint转换后,获取到的BE8、BG8、这些单元格的值都是#VALUE,导致我们系统无法正常使用了,这个比较严重,看能否在程序中通过什么变通方法,让能得出计算结果呢?
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-10-10 16:58:45
10#
关于第二个问题,我是用spreadjs 直接保存为excel文件不会出现问题
使用GCEXCEL在后台用下面的代码加载json并保存为excel也没有问题
上述两种办法都是可以在office 365中直接显示公式计算结果的

  1.             Workbook workbook = new Workbook();
  2.             workbook.FromJson(File.ReadAllText(@"D:\Projects\Array-json\Array-json.txt"));
  3.             workbook.Save(@"D:\Projects\Array-json\test.xlsx", SaveFileFormat.Xlsx);
复制代码


我不确定你使用的Exporter类是哪个控件的,为什么要转成内存流又用spread来加载再保存,多个控件更容易出现兼容性问题

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