需求背景:使用在线表格编辑器打开文件之后,在客户操作完之后,判断文件是否被修改,如果有修改,则重新保存文件。
实现方案:
这种需求其实要具体分析。不少客户最开始会选择用MD5来作为验证算法。DM5验证原理是,只要有一个字节的内容发生了变化,得到的MD5值就会完全不相同。这一点是不太适用于Excel文件的。因为Excel文件中,除了基础数据,还有公式、透视表等其它的非结构化数据。Excel中的时间日期函数会随着打开文件的时间做自动的刷新,但其实这种变化,对用户来说,并不属于文件变化。因此MD5加密算法并不适用于Excel文件。
在SpreadJS当中,如果我们在项目中使用了在线表格编辑器,可以考虑调用下面的代码:
- designer.getData('isFileModified')
复制代码 当该方法返回为true时,表示文件发生过变化。当我们对文件进行增加删除行列、填充背景、修改值等操作时,该方法都会返回true。值得注意的是,如果在做了修改之后,再进行撤销回退到最初状态,该方法也会认为文件发生了变化,返回为true。
如果项目中没有使用在线表格编辑器,则可以通过获取脏数据来判断文件是否发生修改。脏数据的概念可以先点击学习指南进行了解。但是需要注意的是,脏数据遂于新增行等一些特定行为,并不会判定为脏数据,可以结合事件监听等方式判断。此种实现方式需要考虑的情况会比较多,需要根据需求设计合适的监听事件。如果只是简单判断,还是比较推荐designer.getData('isFileModified')这种方式。
|
|