1.问题描述编辑
多次导入Excel,运用了JS实现自定义导入Excel的功能。而对于不定行式的报表,因为行可以扩展,所以在连续多次导入Excel时,碰到较多场景无法满足客户需求。如果Excel数据行数大于等于页面已有数据,则执行全量导入,会覆盖掉模板原始数据;而如果Excel数据行数少于模板原始数据,会执行插入操作。
所以在这两种不同情况下,希望都能选择是插入或者是覆盖。
2.解决思路编辑
针对不定行式填报表,提供统一的多次导入Excel的计算逻辑,包括:
1)始终执行覆盖导入(不清空已有数据):每次导入Excel时,无论Excel中的行数是多于还是少于填报页面,均执行覆盖导入。如果Excel数据少于填报页面已有数据,则填报页面多出来的数据在Excel导入后保留。
2)始终执行覆盖导入(清空已有数据):每次导入Excel时,无论Excel中的行数是多于还是少于填报页面,均执行覆盖导入,且每次导入时均清空填报页面已有数据,无论页面数据是多于还是少于Excel,最后只保留Excel中的内容。
3)始终执行增量导入:每次导入Excel时,无论Excel中的行数是多于还是少于填报页面,均执行增量导入,在结尾行扩充导入的Excel内容。
整合上述三种导入Excel的逻辑,分别对应三种Excel导入方式,三种方式命名为:覆盖导入、清空导入、增量导入。
3.示例编辑
4.保存预览编辑
点击保存,选择新填报预览。
页面左上角会出现多次导入【excel】按钮,下拉显示Excel导入的方式。
效果如下图:
5.实现原理编辑
示例:
1)打开上述示例,给B6单元格添加按钮控件,如下图:
2)添加覆盖导入的点击事件,如下图:
JS代码:
3)新填报预览
保存模板,点击新填报预览,效果如下图:
同上述示例,实现清空导入。
JS代码:
同上述示例,实现增量导入。
JS调用方法: