请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

潘嗒嗒

注册会员

10

主题

34

帖子

118

积分

注册会员

积分
118
潘嗒嗒
注册会员   /  发表于:2025-4-1 15:51  /   查看:134  /  回复:8
10金币
本帖最后由 潘嗒嗒 于 2025-4-2 15:17 编辑

如标题所示,开启了calcOnDemand参数 calcOnDemand = true,但导出的文件包含公式计算的部分显示空白了,怎么解决呢

最佳答案

查看完整内容

1、“我猜测calcOnDemand=true的这个命令是不是没有渲染当前页面不可见区域的公式列,导致导出的文件公式列是没有真正渲染进数据的” calcOnDemand 是在需要公式的值时进行计算,一般是绘制可见区域,或者是调用getValue时计算,您的猜测是有可能的。 2、“spread有没有单独的命令可以让我强制重新渲染所有单元格(包括公式)的数据。” 您可以试下执行 "spread.repaint()" "spread.calculate()" 重绘/重新计算所有单元格,看 ...

8 个回复

倒序浏览
最佳答案
最佳答案
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2025-4-1 15:51:39
来自 7#
1、“我猜测calcOnDemand=true的这个命令是不是没有渲染当前页面不可见区域的公式列,导致导出的文件公式列是没有真正渲染进数据的”
calcOnDemand 是在需要公式的值时进行计算,一般是绘制可见区域,或者是调用getValue时计算,您的猜测是有可能的。

2、“spread有没有单独的命令可以让我强制重新渲染所有单元格(包括公式)的数据。”
您可以试下执行 "spread.repaint()" "spread.calculate()" 重绘/重新计算所有单元格,看是否可以解决问题。如果仍是不行,原因可能即如1所述。

3、“后端用的java poi ,直接读取的单元格数据”
还有一种思路,可以看下poi有没有导入文件重算所有公式的接口,等计算完毕后再读取值。
不过SpreadJS在设计上未与POI做兼容,这个问题也可能与兼容性有关。
事实上,更建议您使用与SpreadJS配套使用的后端表格产品GcExcel,避免后续开发遇到更多兼容性问题。


回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2025-4-1 17:02:28
2#
您好,
本地测试未复现出您描述的现象,请提供一个具体demo或者可以复现此问题的文件,我验证看看。
回复 使用道具 举报
潘嗒嗒
注册会员   /  发表于:2025-4-1 19:15:40
3#
Lynn.Dou 发表于 2025-4-1 17:02
您好,
本地测试未复现出您描述的现象,请提供一个具体demo或者可以复现此问题的文件,我验证看看。

image.png613220824.png
(图一)
如果滑动条如移动到如图位置,点击保存,文件传给后端则能正确读到FS列的数据。




image.png998700866.png

(图二)
如果直接修改如图二的AJ列(AJ列的填写会影响到FS列相关列公式计算)后进行保存(从来没有滑动到图一的位置),文件传给后端,后端则不能正确读到FS列的数据。



附件为图一和图二分别下载的文件。
虽然图一图二的公式列都有数据,但是实际读取值的时候会有差异。

如果把calcOnDemand = true给注释掉,上述两种情况数据都能正确传输。

export_file.zip

228.96 KB, 下载次数: 12

回复 使用道具 举报
潘嗒嗒
注册会员   /  发表于:2025-4-2 15:17:35
4#
Lynn.Dou 发表于 2025-4-1 17:02
您好,
本地测试未复现出您描述的现象,请提供一个具体demo或者可以复现此问题的文件,我验证看看。

能尽快帮忙看下吗,问题比较紧急
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2025-4-2 16:01:54
5#
”文件传给后端则能正确读到FS列的数据。“
后端您是如何读取的FS列数据,使用的GcExcel产品吗?
如果是,读取数据的代码请提供下,我本地尝试复现看看。
回复 使用道具 举报
潘嗒嗒
注册会员   /  发表于:2025-4-2 16:28:46
6#
Lynn.Dou 发表于 2025-4-2 16:01
”文件传给后端则能正确读到FS列的数据。“
后端您是如何读取的FS列数据,使用的GcExcel产品吗?
如果是 ...

后端用的java poi ,直接读取的单元格数据;而且我发现一个奇怪的点就是关于附件中不能成功读取的那个excel,我打开excel直接ctrl+c又能成功读取,如果是原始的文件直接上传就不能读取。我猜测calcOnDemand=true的这个命令是不是没有渲染当前页面不可见区域的公式列,导致导出的文件公式列是没有真正渲染进数据的。或者spread有没有单独的命令可以让我强制重新渲染所有单元格(包括公式)的数据。
回复 使用道具 举报
潘嗒嗒
注册会员   /  发表于:2025-4-2 17:53:31
8#
Lynn.Dou 发表于 2025-4-2 17:18
1、“我猜测calcOnDemand=true的这个命令是不是没有渲染当前页面不可见区域的公式列,导致导出的文件公式列 ...

您好,经过本地测试,spread.calculate()方法可以解决这个问题
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2025-4-3 14:04:19
9#
问题解决了就好,那本帖就先结贴了,有问题欢迎另开新帖交流。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部