我想吃麻薯 发表于 2024-8-23 12:11:22

【17.0.6】合并两个文件时正确处理样式问题

本帖最后由 我想吃麻薯 于 2024-8-23 13:41 编辑

目前我们的业务场景:
用户需要在当前的文件——下称为文件 1(在 spread 中 )中,选择另一个文件——下称文件 2(一般来说是 excel文件)中的某几个 sheet,合并到当前文件中,且其中合并上来的 sheet 样式保留

目前我们的解决方案:
将文件 2 中所有的样式用getNamedStyles()获取到,重命名(加个随机字符前缀保证不会有冲突),随后使用addNamedStyle()赋值给文件 1,从文件 2 指定 sheet 合并到文件 1还能保证样式不会丢失。

目前出现的问题:
1. 这样合并样式不会丢,但是会有很多文件 2 中用不到样式也会赋值到文件 1中,会导致样式文件膨胀。
2. 如果文件 2 中本身样式有问题(比如 excel 打开时会自动修复 style,见截图),那么与文件 1合并后的文件导出为 excel,也会报同样的问题,可见附件,是我合并后导出的 excel(除了 sheet1,都是合并上来的 sheet)


一点建议,贵公司是否可以考虑以下两点:
1. 样式优化
2. 自定义名称优化


dexteryao 发表于 2024-8-23 17:07:43

在服务端通过GCExcel合并,内部会处理掉样式的问题

AlexZ 发表于 2024-8-30 11:29:32

1. 这样合并样式不会丢,但是会有很多文件 2 中用不到样式也会赋值到文件 1中,会导致样式文件膨胀。
2. 如果文件 2 中本身样式有问题(比如 excel 打开时会自动修复 style,见截图)


问题1:
SpreadJS 和 GcExcel 作为控件,无法判断哪些样式对业务有意义,因此从产品设计角度,不会“智能”或者“自动”的删除用户已有的数据和设置。
目前通过已有 API 的组合可以达到找到样式 》 判断是否无用 》 删除样式

问题2:
这个修复实际上是应用层面的功能,同样,需要通过用户的选择(干预)才能决定下一步动作

可以提供这样一个文件给我,因为类似的样式问题可能有非常多类型,如果作为导入导出的内置功能,不仅影响性能,也可能只能覆盖个别场景。

我想吃麻薯 发表于 2024-9-12 14:08:54

AlexZ 发表于 2024-8-30 11:29
问题1:
SpreadJS 和 GcExcel 作为控件,无法判断哪些样式对业务有意义,因此从产品设计角度,不会 ...

请问“目前通过已有 API 的组合可以达到找到样式 》 判断是否无用 》 删除样式”,如何判断是否无用呢

AlexZ 发表于 2024-9-14 17:48:38

这里的“无用”或者“用不到”应该是个业务侧的判断


从技术上讲,如果两个样式中的设置完全一致,应用的范围也一样,可以认为是重复的样式

如果仅设置不一样,但应用的范围,或者某个样式会被应用到条件格式中,这样的情况是否“无用”就需要咱们进行判断了
页: [1]
查看完整版本: 【17.0.6】合并两个文件时正确处理样式问题