Wilson.Zhang 发表于 2024-10-29 10:10:35

SpreadJS 拖拽填充:仅复制值的解决方案探讨

Excel拖拽填充时将拖拽源单元格的样式一并拖拽至填充区域的单元格,如果拖拽源只有一行,则复制该行数据;如果拖拽源包含两行及以上,则会根据拖拽源中各列数据形成的序列规则扩展填充,以保证填充后各列仍然是有规则的序列。SpreadJS通过AutoFillType扩展拖拽填充的灵活性,支持的拖拽填充类型包括仅复制值(copyCells)、填充序列(fillSerise)、仅填充单元格格式(fillFormattingOnly)、不填充格式(fillWithoutFormatting)等。copyCells填充类型将复制单元格内的所有元素填充至单元格,包括数值、单元格格式等。如果只想要将单元格中的数据拖拽至填充区域,而不希望携带单元格的样式呢?分析下先。

首先,如果想要复制拖拽源单元格的数值,那么,只有copyCells填充类型能满足。其次,copyCells在复制单元格中数值的同时,也将单元格的样式一并复制填充至填充区域。那么,可以尝试的一个方向是,在拖拽填充完成后复原填充区域单元格的原有样式。具体思路如下:

1. 注册DragFillBlock事件,监听被填充区域,同时记录被填充区域单元格的原有样式。记为FilledRangeStyles。
2. 注册DragFillBlockCompleted事件,在拖拽填充动作结束后,将FilledRangeStyles重设至填充单元格区域。

上述方案执行效果如图1所示,附上代码,以供参考。

图1. 拖拽填充仅复制值
问题原帖:https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=228348
页: [1]
查看完整版本: SpreadJS 拖拽填充:仅复制值的解决方案探讨