EplanningSoft 发表于 2020-10-9 16:11:14

FarPoint导出Excel,数组函数不计算

通过FarPoint控件(v8.4)导出Excel时,报表中的数组函数不计算,有没有什么方法可以实现数组函数的计算?
在spreadjs中是可以计算出来的。

导出到Excel后,没有计算-值是#VALUE,需要手动Shift+Ctrl+Enter才可以,但实际应用中,应导出跟界面报表一样的数据才对,不能让客户一个一个单元格再去按键操作

附件中用demo的json

Richard.Ma 发表于 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 发表于 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-cn/office/%e6%95%b0%e7%bb%84%e5%85%ac%e5%bc%8f%e6%8c%87%e5%8d%97%e5%92%8c%e7%a4%ba%e4%be%8b-7d94a64e-3ff3-4686-9372-ecfd5caa57c7?ui=zh-cn&rs=zh-cn&ad=cn#ID0EAAFAAA=Microsoft_365

EplanningSoft 发表于 2020-10-9 18:05:48

Richard.Ma 发表于 2020-10-9 17:24
了解了,我看到您这边是使用GCExcel来做转换的,理论上转换后通过Spread保存的文件在Excel中是可以自动计算 ...

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

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


附件里是导出的excel文件

Richard.Ma 发表于 2020-10-9 18:24:46

我在office365中测试了一下,这个公式本身就有错误,即使按Ctrl + Shift + enter也无法计算得出。
以BF9为例,使用EXCEL显示错误步骤,在第一步就会报错




EplanningSoft 发表于 2020-10-10 14:32:13

Richard.Ma 发表于 2020-10-9 18:24
我在office365中测试了一下,这个公式本身就有错误,即使按Ctrl + Shift + enter也无法计算得出。
以BF9为 ...

公式在spreadjs里面可以正常计算的呀,而且导出到Excel中,我按Ctrl + Shift + enter也可以计算出结果

你看我发起问题的第一个截图,就是spreadjs中的截图,也是有结果的

Richard.Ma 发表于 2020-10-10 15:46:28

我这边使用的是office365。发现了我这边出现错误的原因是直接用excel打开文件后,公式中会出现一个@符号,去除后可以显示和你那边一样正确的结果,且无需按Ctrl + Shift + Enter


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

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

EplanningSoft 发表于 2020-10-10 16:51:05

Richard.Ma 发表于 2020-10-10 15:46
我这边使用的是office365。发现了我这边出现错误的原因是直接用excel打开文件后,公式中会出现一个@符号, ...

Excel版本使用是一个情况;
另外,我们这边还比较棘手的问题是,后台通过FarPoint解析打开报表,需要获取到上面的数据 进行保存处理,现在后台FarPoint转换后,获取到的BE8、BG8、这些单元格的值都是#VALUE,导致我们系统无法正常使用了,这个比较严重,看能否在程序中通过什么变通方法,让能得出计算结果呢?

Richard.Ma 发表于 2020-10-10 16:58:45

关于第二个问题,我是用spreadjs 直接保存为excel文件不会出现问题
使用GCEXCEL在后台用下面的代码加载json并保存为excel也没有问题
上述两种办法都是可以在office 365中直接显示公式计算结果的

            Workbook workbook = new Workbook();
            workbook.FromJson(File.ReadAllText(@"D:\Projects\Array-json\Array-json.txt"));
            workbook.Save(@"D:\Projects\Array-json\test.xlsx", SaveFileFormat.Xlsx);


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

页: [1] 2 3
查看完整版本: FarPoint导出Excel,数组函数不计算