找回密码
 立即注册

QQ登录

只需一步,快速开始

Jeffrey_sun
金牌服务用户   /  发表于:2024-1-29 14:19  /   查看:1515  /  回复:13
本帖最后由 Lynn.Dou 于 2024-3-5 15:59 编辑

产品:GcExcel
版本:6.2.0
编号:DOCXLS-9791
Last Review: 2024/3/5
此问题已于V7.0.4 修复,目前已通过maven发布,建议升级验证下。

问题描述:实际场景中,用户会按照excel的使用习惯来使用spreadjs,比如,在线spreadjs跨sheet复制是会连同条件格式一起复制到目标sheet,以及各种删除删不干净的情况。demo.sjs是提供的一个实例。这个demo.sjs用spreadjs是可以正常打开的,gc用workboot.open也能正常打开,但是workbook.save方法时就会报错。

期望结果: 文件虽然有问题,既然spreadjs能正常打开,gc的open防范也不报错,那gc的save方法是不是也可不报错正常保存呢

GC兼容错误sjs.zip

209.26 KB, 下载次数: 108

13 个回复

正序浏览
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-3-5 15:58:05
14#
本帖最后由 Lynn.Dou 于 2024-3-5 15:59 编辑

更新进展:
V7.0.4 已在maven更新,您可以升级验证下。
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-2-26 13:59:31
13#
回复 使用道具 举报
Jeffrey_sun
金牌服务用户   /  发表于:2024-2-26 11:30:10
12#
Lynn.Dou 发表于 2024-2-26 10:55
更新进展:
经调研,导出sjs文件报异常的原因是:Sheet2 L2的数据验证中存在无效公式。此问题计划在V7.0.4 ...

收到
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-2-26 10:55:38
11#
本帖最后由 Lynn.Dou 于 2024-2-26 13:59 编辑

更新进展:
经调研,导出sjs文件报异常的原因是:文件中存在无效公式(如Sheet2 L2的数据验证公式)。此问题计划在V7.0.4修复,修复后GcExcel导出sjs文件不会报异常,会将无效的公式做丢弃处理。
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-1-31 12:24:23
10#
SpreadJS 17.0.9 | GcExcel 7.1.2 已发布~
回复 使用道具 举报
Jeffrey_sun
金牌服务用户   /  发表于:2024-1-31 08:31:03
9#
Lynn.Dou 发表于 2024-1-30 16:50
需求了解,问题正在进一步调研中,有进展会在贴中通知。

好的,感谢
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-1-30 16:50:06
8#
需求了解,问题正在进一步调研中,有进展会在贴中通知。
回复 使用道具 举报
Jeffrey_sun
金牌服务用户   /  发表于:2024-1-30 14:41:08
7#
Lynn.Dou 发表于 2024-1-30 10:26
根据您前面的描述,我的理解为:
如果sjs文件不做复制粘贴条件格式行为,那么GcExcel 执行save方法时 ...

问题2:可以忽略,暂时不用管
问题1:第一点,我个人理解不管什么操作,spreadjs能打开,gc的open方法也能正常执行,那workbook的save方法是否也应该正常执行不报错?所以想您确认的是这是否属于gc的bug,是否要修复(我现在的处理方式很粗暴,除了指定的sheet外,其余sheet都执行了条件格式删除,这毕竟是下下策)
第二点的话暂时也可以不考虑,先确认第一点问题
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-1-30 10:26:38
6#
Jeffrey_sun 发表于 2024-1-29 18:10
大致过程是这样的,我再Sheet2里增加了条件格式,然后从sheet2复制单元格到Sheet1,这是Sheet2中的条件格 ...


根据您前面的描述,我的理解为:
如果sjs文件不做复制粘贴条件格式行为,那么GcExcel 执行save方法时不会报错。
如果sjs文件做了复制粘贴条件格式行为,那么GcExcel 执行save方法时才会报错。

所以我做了如下测试:
观察您提供的demo.sjs文件,发现sheet1已经包含了条件格式,所以猜测demo.sjs应是完成复制粘贴条件格式后导出的文件。
我尝试将sheet1中的条件格式删除,再次通过GcExcel做save操作,发现还是会报错的,这与我的预期不一致。


如果说只是想了解save方法报错的具体问题点,那么通过demo.sjs文件已经可以复现了。
如果说是想调研为什么复制粘贴条件格式后save报错,那么还需要您提供以下信息:
1、原始sjs文件(如before.sjs)
2、SpreadJS导入before.sjs后,具体执行了什么样的复制粘贴行为,详细的操作步骤请提供下。
之后SpreadJS导出 after.sjs
3、GcExcel导入 after.sjs 后再做save会报错,提供下报错截图。(预期中,导入before.sjs再做save应不会报错)

综上,只有理解了您的真实需求,才能进一步去调研相应的方案。

另,关于问题2 ”Workbook有没有转换成inputStream的方法
您是想咨询如何将workbook导出为流的形式吗?可以参考下方代码:
  1. FileOutputStream outputStream = new FileOutputStream( "result.sjs");
  2.         workbook.save(outputStream, SaveFileFormat.Sjs);
复制代码


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