SpreadJS在保存普通文本数据的基础上,扩展了单元格类型以满足多样化的业务场景需求。能够让用户在使用Worksheet填报数据的同时,获得如同使用DOM中表单元素的操作体验。比如,DOM表单元素的输入源允许设置文本输入框、单选框、复选框等,通过SpreadJS的内置单元格类型即可在填报数据的过程中保留类似表单控件的操作体感受,极大地增强了填报场景中的人机交互效果。","marks":[]}]}],"state":{}}]">SpreadJS在保存普通文本数据的基础上,扩展了单元格类型以满足多样化的业务场景需求。能够让用户在使用Worksheet填报数据的同时,获得如同使用DOM中表单元素的操作体验。比如,DOM表单元素的输入源”<input>“允许设置文本输入框、单选框、复选框等,通过SpreadJS的内置单元格类型即可在填报数据的过程中保留类似表单控件的操作体感受,极大地增强了填报场景中的人机交互效果。
然而,Microsoft Excel中不存在单元格类型的概念,自然也不支持单元格类型。这意味着通过SpreadJS导出的xlsx文件无法保留导出前电子表格中设置的单元格类型样式,仅能保留设置内容。如图1所示,单元格类型为复选框列表,以及通过其填报的数据。相应地,在Excel文件中仅能保留数据“选项1,选项2”,如图2所示。
图1. 单元格类型和对应填充的数据
图2. SpreadJS与Excel对复选框列表单元格类型的视图效果
由于Excel文件中无法保存复选框单元格类型的样式数据,仅能保存通过单元格类型填报的数据,因此,SpreadJS在导入Excel文件后也无法显示原本设置的复选框单元格类型。那么,还有办法复原数据对应的复选框样式吗?如果可以的话,能否一并复原在复选框单元格中关于各选项选中与否的标记呢?
为了寻找解决方案,只能在读入文件后寻找突破口。尝试在导入Excel文件后,对原本设置了复选框单元格类型的单元格再次设置复选框单元格类型,并通过Worksheet:setValue()将Worksheet:getValue()获取到的结果渲染在复选款单元格类型上。如图3所示,在SpreadJS设置了复选款单元格类型,并保存为Excel文件,之后再次导入SpreadJS,经过重设后,复选框单元格得以重现,并保留原有的选中标记。
图3. 复选框单元格还原
问题原帖:https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=228368
|