电子表格的数据处理方法和装置与流程

文档序号:13876376阅读:258来源:国知局
电子表格的数据处理方法和装置与流程

本发明涉及数据处理技术领域,尤其涉及一种电子表格的数据处理方法和装置。



背景技术:

电子表格(spreadsheet),又称电子数据表,由一系列行与列构成的网格,网格内可以存放数值、计算式以及文本等。常用的电子表格例如excel表格,excel表格被提交至版本管理服务器做版本管理。

在日常工作中,经常会出现多个用户同时编辑一个电子表格,多个用户同时对一个电子表格编辑时,在编辑完成后提交电子表格时会出现表格冲突。现有技术中,可以通过锁定电子表格避免冲突,即在编辑电子表格时要锁住表格,同一张表格同一时间只有一个人能够编辑,表格被解除锁定后,其他人才能接着锁定表格并编辑。

上述方案虽然能够有效的解决版本管理中表格冲突的问题,但是该方法相当于一种排队方案,每次编辑表格需等前一个编辑者释放,编辑效率低。



技术实现要素:

本发明提供一种电子表格的数据处理方法和装置,能够避免电子表格的冲突,并且多个用户能够并行执行,提高了电子表格的编辑效率。

本发明第一方面提供一种电子表格的数据处理方法,包括:

接收用户在当前编辑的电子表格的第一版本上输入的版本对比指示;

根据所述版本对比指示,取消用户对所述第一版本的编辑,并将所述第一版本更新为版本管理服务器当前保存的所述电子表格的第二版本;

确定所述第一版本相对于所述第二版本的差异单元格;

合并所述差异单元格中的数据;

提交合并后的版本。

可选的,确定所述第一版本相对于所述第二版本的差异单元格,包括:

将所述第一版本按页转换为第一矩阵,将所述第二版本按页转换为第二矩阵,所述第一矩阵和所述第二矩阵均为二维矩阵;

比较所述第一矩阵和所述第二矩阵,得到所述差异单元格。

可选的,比较所述第一矩阵和所述第二矩阵,得到所述差异单元格,包括:

将所述第一矩阵转换为第一索引矩阵,将所述第二矩阵转换为第二索引矩阵,其中,所述第一矩阵和所述第二矩阵中相同元素对应的索引相同;

比较所述第一索引矩阵和所述第二索引矩阵,得到所述差异单元格。

可选的,比较所述第一索引矩阵和所述第二索引矩阵,得到所述差异单元格,包括:

比较所述第一索引矩阵和所述第二索引矩阵,得到所述第一索引矩阵和所述第二索引矩阵的行对比结果;

根据所述第一索引矩阵和所述第二索引矩阵的行对比结果,确定所述第一索引矩阵和所述第二索引矩阵的共同行;

从所述第一索引矩阵中获取所述共同行,得到第一共同行矩阵,从所述第二索引矩阵中获取所述共同行,得到第二共同行矩阵;

交换所述第一共同行矩阵的行和列,得到第一交换矩阵,交换所述第二共同行矩阵的行和列,得到第二交换矩阵;

比较所述第一交换矩阵和所述第二交换矩阵,得到所述第一索引矩阵和所述第二索引矩阵的列对比结果;

根据所述第一索引矩阵和所述第二索引矩阵的行对比结果,确定单元格的数据变化结果。

可选的,比较所述第一索引矩阵和所述第二索引矩阵,得到所述第一索引矩阵和所述第二索引矩阵的行对比结果,包括:

按照顺序每次读取所述第一索引矩阵的x行数据和所述第二索引矩阵的x行数据,x小于m,且x小于n,m为所述第一索引矩阵的总行数,n为所述第二索引矩阵的总行数;

将读取的每行数据作为序列的一个元素,计算所述第一索引矩阵的x行数据对应的第一序列与所述第二索引矩阵的x行数据对应的第二序列对比的积分,得到全局积分矩阵;

回溯所述全局积分矩阵,获取所述第一索引矩阵的x行数据和所述第二索引矩阵的x行数据的行对比结果。

可选的,将每行数据作为序列的一个元素,计算所述第一索引矩阵的x行数据对应的第一序列与所述第二索引矩阵的x行数据对应的第二序列对比的积分,得到全局积分矩阵,包括:

初始化所述全局积分矩阵的第一行和第一列;

通过如下公式所述计算积分矩阵的其他行和其他列:

f[i][j]=max(

f[i-1][j-1]+s(a[i],b[j]),

f[i][j-1]+d,

f[i-1][j]+d

)

其中,f[i][j]为a[i]和b[j]的相似度,a[i]为所述第一序列的第i个元素,b[j]为所述第二序列的第j个元素;

s(a[i],b[j])为a[i]和b[j]做单序列对比时得到的相似度得分;

d为f[i][j]继承前面序列相似度时的损耗。

可选的,合并所述差异单元格中的数据之前,还包括:

在所述电子表格中显示所述差异单元格中的数据;

所述合并所述差异单元格中的数据,包括:

接收用户对所述差异单元格中的待合并单元格的选中操作;

接收用户对所述差异单元格中的待合并单元格输入的数据合并指示,所述数据合并指示用于指示保留所述待合并单元格中的第一版本的数据或第二版本的数据;

根据所述数据合并指示调整所述待合并单元格中的数据。

可选的,所述待合并单元格包括所述差异单元格中的全部单元格或部分单元格。

可选的,所述差异单元格的颜色与所述电子表格中其他单元格的颜色不同。

可选的,取消用户对所述第一版本的编辑,并将所述第一版本更新为版本管理服务器当前保存的所述电子表格的第二版本之前,还包括:

判断所述第一版本的版本号与所述第二版本的版本号是否相同;

当所述第一版本的版本号与所述第二版本的版本号不同时,取消用户对所述第一版本的编辑,并将所述第一版本更新为版本管理服务器当前保存的所述电子表格的第二版本。

本发明第二方面提供一种电子表格的数据合并装置,包括:

接收模块,用于接收用户在当前编辑的电子表格的第一版本上输入的版本对比指示;

更新模块,用于根据所述版本对比指示,取消用户对所述第一版本的编辑,并将所述第一版本更新为版本管理服务器当前保存的所述电子表格的第二版本;

差异确定模块,用于确定所述第一版本相对于所述第二版本的差异单元格;

数据合并模块,用于合并所述差异单元格中的数据;

提交模块,用于提交合并后的版本。

可选的,所述差异确定模块,包括:

转换子模块,用于将所述第一版本按页转换为第一矩阵,将所述第二版本按页转换为第二矩阵,所述第一矩阵和所述第二矩阵均为二维矩阵;

对比子模块,用于比较所述第一矩阵和所述第二矩阵,得到所述差异单元格。

可选的,所述对比子模块,具体用于:

将所述第一矩阵转换为第一索引矩阵,将所述第二矩阵转换为第二索引矩阵,其中,所述第一矩阵和所述第二矩阵中相同元素对应的索引相同;

比较所述第一索引矩阵和所述第二索引矩阵,得到所述差异单元格。

可选的,所述对比子模块比较所述第一索引矩阵和所述第二索引矩阵,得到所述差异单元格,具体为:

比较所述第一索引矩阵和所述第二索引矩阵,得到所述第一索引矩阵和所述第二索引矩阵的行对比结果;

根据所述第一索引矩阵和所述第二索引矩阵的行对比结果,确定所述第一索引矩阵和所述第二索引矩阵的共同行;

从所述第一索引矩阵中获取所述共同行,得到第一共同行矩阵,从所述第二索引矩阵中获取所述共同行,得到第二共同行矩阵;

交换所述第一共同行矩阵的行和列,得到第一交换矩阵,交换所述第二共同行矩阵的行和列,得到第二交换矩阵;

比较所述第一交换矩阵和所述第二交换矩阵,得到所述第一索引矩阵和所述第二索引矩阵的列对比结果;

根据所述第一索引矩阵和所述第二索引矩阵的行对比结果,确定单元格的数据变化结果。

可选的,所述对比子模块比较所述第一索引矩阵和所述第二索引矩阵,得到所述第一索引矩阵和所述第二索引矩阵的行对比结果,具体为:

按照顺序每次读取所述第一索引矩阵的x行数据和所述第二索引矩阵的x行数据,x小于m,且x小于n,m为所述第一索引矩阵的总行数,n为所述第二索引矩阵的总行数;

将读取的每行数据作为序列的一个元素,计算所述第一索引矩阵的x行数据对应的第一序列与所述第二索引矩阵的x行数据对应的第二序列对比的积分,得到全局积分矩阵;

回溯所述全局积分矩阵,获取所述第一索引矩阵的x行数据和所述第二索引矩阵的x行数据的行对比结果。

可选的,所述对比子模块将每行数据作为序列的一个元素,计算所述第一索引矩阵的x行数据对应的第一序列与所述第二索引矩阵的x行数据对应的第二序列对比的积分,得到全局积分矩阵,具体为:

初始化所述全局积分矩阵的第一行和第一列;

通过如下公式所述计算积分矩阵的其他行和其他列:

f[i][j]=max(

f[i-1][j-1]+s(a[i],b[j]),

f[i][j-1]+d,

f[i-1][j]+d

)

其中,f[i][j]为a[i]和b[j]的相似度,a[i]为所述第一序列的第i个元素,b[j]为所述第二序列的第j个元素;

s(a[i],b[j])为a[i]和b[j]做单序列对比时得到的相似度得分;

d为f[i][j]继承前面序列相似度时的损耗。

可选的,所述装置还包括:

显示模块,用于在所述电子表格中显示所述差异单元格中的数据;

所述数据合并模块,具体用于:

接收用户对所述差异单元格中的待合并单元格的选中操作;

接收用户对所述差异单元格中的待合并单元格输入的数据合并指示,所述数据合并指示用于指示保留所述待合并单元格中的第一版本的数据或第二版本的数据;

根据所述数据合并指示调整所述待合并单元格中的数据。

可选的,所述待合并单元格包括所述差异单元格中的全部单元格或部分单元格。

可选的,所述差异单元格的颜色与所述电子表格中其他单元格的颜色不同。

可选的,所述装置还包括:

判断模块,用于判断所述第一版本的版本号与所述第二版本的版本号是否相同;

所述更新模块,具体用于:当所述第一版本的版本号与所述第二版本的版本号不同时,取消用户对所述第一版本的编辑,并将所述第一版本更新为版本管理服务器当前保存的所述电子表格的第二版本。

本发明第三方面提供一种计算机可读存储介质,应用在电子表格的数据合并装置中,所述计算机可读存储介质存储有指令,当所述指令被计算装置执行时,使得所述电子表格的数据合并装置执行如本发明第一发明提供的所述方法。

本发明提供的电子表格的数据处理方法和装置,接收用户在当前编辑的电子表格的第一版本上输入的版本对比指示,根据版本对比指示,取消用户对第一版本的编辑,并将第一版本更新为版本管理服务器当前保存的电子表格的第二版本,确定第一版本和第二版本的差异单元格,合并差异单元格中的数据,提交合并后的版本。由于在数据合并之前将第一版本更新为第二版本了,合并后的版本的版本号为第二版本号,合并后的版本的版本号与版本管理服务器上的版本的版本号一致,从而能够避免电子表格的冲突,并且多个用户能够并行执行,提高了电子表格的编辑效率。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。

图1为本发明实施例一提供的电子表格的数据处理方法的流程图;

图2为电子表格的菜单栏的一种示意图;

图3为本发明实施例二提供的电子表格的数据处理方法的流程图;

图4为本发明实施例三提供的电子表格的数据处理方法的流程图;

图5为本发明实施例四提供的电子表格的数据处理方法的流程图;

图6为本发明实施例五提供的电子表格的数据合并装置的结构示意图;

图7为本发明实施例六提供的电子表格的数据合并装置的结构示意图;

图8为本发明实施例七提供的电子表格的数据合并装置的结构示意图;

图9为本发明实施例八提供的电子表格的数据合并装置的结构示意图;

通过上述附图,已示出本发明明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本发明构思的范围,而是通过参考特定实施例为本领域技术人员说明本发明的概念。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

图1为本发明实施例一提供的电子表格的数据处理方法的流程图,本实施例的方法由终端设备完成,该终端设备例如是手机、平板电脑、个人电脑等,如图1所示,本实施例提供的方法包括以下步骤:

步骤s101、接收用户在当前编辑的电子表格的第一版本上输入的版本对比指示。

其中,该版本对比指示用于指示对比电子表格的第一版本和第二版本,第一版本为本地版本,第二版本为电子表格的最新版本,第二版本保存在版本管理服务器。该电子表格例如是excel表格,本实施例可以适用于多个用户同时对一个电子表格编辑的场景,在用户对电子表格编辑的过程中,如果其他用户提交了新的版本,则第二版本的版本号与第一版本的版本号不同,如果其他用户没有提交新的版本,则第二版本的版本号与第一版本的版本号相同。

本实施例中,可以在电子表格的菜单栏增加一个对比按钮,用户可以通过该对比按钮输入该版本对比指示,例如,用户在编辑完成电子表格后,点击菜单栏中的对比按钮输入该版本对比指示。其中,电子表格的版本对比功能和后续的数据合并功能可以以插件的形式集成后存在。图2为电子表格的菜单栏的一种示意图,如图2所示,菜单栏中增加了g68插件菜单,用户点击g68插件菜单后会显示下拉菜单,下拉菜单中显示有四个按钮:对比按钮、还原按钮、使用我的按钮、使用他的按钮,其中,对比按钮用于输入版本对比指示,还原按钮用于撤销对第一版本和第二版本的合并,使用我的按钮和使用他的按钮用于输入数据合并指示,其中,使用我的按钮用于输入指示保留待合并单元格中的第一版本的数据,使用他的按钮用于指示保留待合并单元中的第二版本的数据。用户通过点击上述四个按钮,执行相应的功能。需要说明的是,图2所示菜单栏只是一种示意图,菜单的名称以及下拉菜单中的各按钮的名称都只是举例说明,并不对此限制。

步骤s102、根据该版本对比指示,取消用户对第一版本的编辑,并将第一版本更新为版本管理服务器当前保存的电子表格的第二版本。

具体的,终端设备根据该版本对比指示,向版本管理服务器发送数据下载请求,该数据下载请求用于请求下载电子表格的第二版本,该第二版本为电子表格的最新版本。版本管理服务器根据数据下载请求确定终端设备要下载的电子表格,将电子表格的第二版本携带在数据下载响应中发送给终端设备,终端设备从数据下载响应中读取电子表格的第二版本。

可选的,终端设备从版本管理服务器下载第二版本之前,先校验电子表格是否受版本管理服务器管理,如果电子表格受版本管理服务器管理,则从版本管理服务器下载电子表格的第二版本。如果电子表格不受版本管理服务器管理,则结束流程。终端设备可以从本地获取电子表格的存储路径,根据电子表格的存储路径确定电子表格是否受版本管理服务器管理。

下载电子表格的第二版本之后,取消用户对第一版本的编辑,取消用户对第一版本的编辑之后,将第一版本更新为第二版本,向用户显示第二版本。具体可以使用revert指令取消用户对第一版本的编辑,使用update指令将第一版本更新为第二版本。

使用revert指令取消用户对第一版本的编辑的目的是防止表格冲突,可能由于其他用户对电子表格的编辑导致第二版本的版本号和第一版本的版本号可能不同,后续用户在提交第一版本时,会因为版本号不一致导致版本冲突而无法提交。本实施例中,取消用户对第一版本的编辑后,将第一版本更新为第二版本,使得本地版本的版本号与远程版本的版本号一致,从而能够避免版本冲突。

需要说明的是,使用revert指令取消用户对第一版本的编辑之后,电子表格的第一版本的数据不会从内存中被删除,后续在数据合并时,仍然需要使用第一版本的数据。

可选的,在下载第二版本之后,判断第一版本的版本号与第二版本的版本号是否相同,当第一版本的版本号与第二版本的版本号不同时,取消用户对第一版本的编辑,并将第一版本更新为版本管理服务器当前保存的电子表格的第二版本。当第一版本的版本号与第二版本的版本号相同时,不在执行后续步骤。可选的,终端设备可以提示用户第一版本与第二版本的版本号相同,便于用户能够及时提交第一版本。

当然,也可以不判断第一版本的版本号与第二版本的版本号是否相同,直接取消用户对第一版本的编辑,并将第一版本更新为版本管理服务器当前保存的电子表格的第二版本。该场景下,后续步骤中第一版本和第二版本的对比结果没有差异,不需要进行数据合并。

步骤s103、确定第一版本相对于第二版本的差异单元格。

终端设备先将第一版本和第二版本读取到内存中,然后对比第一版本和第二版本的数据,得到第一版本相对于第二版本的差异单元格。其中,差异单元格包括新增行、新增列、删除行、删除列和数据发生变化的单元格中的至少一个。这里数据发生变化的单元格不包括新增行、新增列、删除行和删除列。

步骤s104、合并差异单元格中的数据。

差异单元格中包括多个单元格,合并之后,一些差异单元格中的数据可能为第一版本的数据,另一些差异单元格中的数据可能为第二版本的数据,也可能所有差异单元格中的数据都为第一版本的数据,或者,所有差异单元格中的数据都为第二版本的数据。某个差异单元格中的数据最终保留第一版本的数据还是第二版本的数据可以由用户决定。

步骤s105、提交合并后的版本。

由于已经revert掉第一版本,并更新第一版本为第二版本,因此,合并操作是在第二版本上进行的,合并后的版本的版本号为第二版本的版本号,从而能够避免版本冲突。

需要说明的是,如果在数据合并过程中,其他用户向版本管理服务器提交了新的版本,则在提交合并后的版本时,会提示版本有冲突,用户可以重新执行步骤s101至s105,即将合并后的版本作为第一版本,将版本管理服务器中新提交的版本作为第二版本,重新执行上述的合并操作。

本实施例中,接收用户在当前编辑的电子表格的第一版本上输入的版本对比指示,根据版本对比指示,取消用户对第一版本的编辑,并将第一版本更新为版本管理服务器当前保存的电子表格的第二版本,确定第一版本和第二版本的差异单元格,合并差异单元格中的数据,提交合并后的版本。由于在数据合并之前将第一版本更新为第二版本了,合并后的版本的版本号为第二版本号,合并后的版本的版本号与版本管理服务器上的版本的版本号一致,从而能够避免电子表格的冲突,并且多个用户能够并行执行,提高了电子表格的编辑效率。

图3为本发明实施例二提供的电子表格的数据处理方法的流程图,本实施例是对实施例一中步骤s104的一种可行实现方式的描述,如图3所示,本实施例提供的方法包括以下步骤:

步骤s201、将电子表格的第一版本按页转换为第一矩阵,将电子表格的第二版本按页转换为第二矩阵,第一矩阵和第二矩阵均为二维矩阵。

本实施例采用ironpython实现,终端设备会将一个电子表格存为一个python字典。其中,电子表格可以包括多个sheet(工作表),一个sheet可以由1048576行和2464列构成,行的编号从1到65536,列的编号依次用字母a、b……iv表示,每个sheet有一个名字,sheet名显示在工作表标签上。以excel为例,工作表标签显示了系统默认的前三个sheet名:sheet1、sheet2、sheet3。电子表格也可以叫做工作簿,每个sheet也可以叫做电子表格的一页,则电子表格可以看作由多页表格组成。

本实施例中,电子表格的每一个sheet都是该字典的一个键值对,字典的键值为电子表格的sheet名,sheet的内容为值。以第一版本为例,为了便于数据对比,需将第一版本的每页数据转化为一个二维矩阵,转换方法为:将每页数据存为一个python列表,列表的每个数据也是一个列表,将每页数据对应的列表称为一级列表,将一级列表的每个数据对应的列表称为二级列表。以电子表格的某一页为例,将该页的第一行数据存为一级列表的第一个数据,将该页的第二行数据存为一级列表的第二行数据,依次类推,将该页的所有行的数据都存入一级列表。以一级列表的第一个数据对应的二级列表为例,该二级列表的第一个数据为第一行的第一个单元格的数据,该二级列表的第二个数据为第一行的第二个单元格的数据,依次类推,这里不再列举。

步骤s202、将第一矩阵转换为第一索引矩阵,将第二矩阵转换为第二索引矩阵,其中,第一矩阵和第二矩阵中相同元素对应的索引相同。

第一矩阵和第二矩阵与电子表格中的数据一一对应,电子表格中的数据的类型可能有很多种,例如可以数字、字符串等,而且每个单元格有较多内容,直接使用第一矩阵和第二矩阵进行对比,终端设备的负载可能过大,因此,本实施例中,将第一矩阵转换为第一索引矩阵,将第二矩阵转换为第二索引矩阵,使用两个索引矩阵进行对比。但是,本实施例并不以此为限,也可以使用第一矩阵和第二矩阵直接进行对比,例如,当电子表格的两个版本的数据类型单一,或者,电子表格的两个版本的数据较少时,可以直接使用第一矩阵和第二矩阵直接进行对比。

可以通过以下方法将矩阵转换为索引矩阵:首先,新建一个索引字典。该索引字典用于存储第一索引矩阵、第二索引矩阵中的索引与第一矩阵、第二矩阵中元素的对应关系,其中,索引和元素的对应关系可以以键值对的方式存储。键值对的键值为索引,键值对的值为元素,则键值对例如为:[索引1:元素1]、[索引2:元素2],[索引3:元素3]等。

以第一矩阵转换为第一索引矩阵为例,然后,遍历第一矩阵的元素,如果某个元素未存在于索引字典,则新建一个索引,将该索引和该元素的对应关系以键值对的方式存储在索引字典中,同时将第一矩阵中该元素替换为索引值。如果该元素已经存在于索引字典中,则根据该元素与索引的对应关系,将该元素替换为索引字典中对应的索引。通过上述替换过程,第一矩阵中相同元素都被替换为相同的索引,不同元素被替换为不同索引,从而将第一矩阵转换为第一索引矩阵,同样按照上述方法将第二矩阵转换为第二索引矩阵。

步骤s203、比较第一索引矩阵和第二索引矩阵,得到第一版本和第二版本的差异单元格。

可以采用多序列对比(multiplesequencealignment,msa)算法比较第一索引矩阵和第二索引矩阵,在两个矩阵相似的情况下,电子表格的两个相近版本转化来的矩阵都相似),msa算法能很好的对比出两个矩阵对应位置的元素变化情况、行列增删情况。对比结果包括三个部分:行对比结果、列对比结果、单元格变换结果,具体对比过程参照下述实施例三的描述。

本实施例中,通过将第一版本按页转换为第一矩阵,将第二版本按页转换为第二矩阵,第一矩阵和第二矩阵均为二维矩阵,并将第一矩阵转换为第一索引矩阵,将第二矩阵转换为第二索引矩阵,第一索引矩阵和第二索引矩阵,得到差异单元格。通过将矩阵转换为索引矩阵,可以减小矩阵对比的开销,提升矩阵对比效率。

图4为本发明实施例三提供的电子表格的数据处理方法的流程图,本实施例是对实施例二中步骤203的一种可行实现方式的描述,如图4所示,本实施例提供的方法包括以下步骤:

步骤s301、比较第一索引矩阵和第二索引矩阵,得到第一索引矩阵和第二索引矩阵的行对比结果。

电子表格的两个版本的数据可能很大(例如行或列超过500行),假定两个待对比的矩阵行数为m和n,依照needleman-wunsch算法思路,一次性对比矩阵时,会在内存中生成一个(m+1)*(n+1)的积分矩阵,占用过大内存。因此,本实施例中,每次读取第一索引矩阵的x行数据和第二索引矩阵的x行数据,x小于m,对比其结果,直到所有行都对比完成。例如,m为600、n为500,x的取值可以为200,则分三次对比,第一次分别读取第一索引矩阵和第二索引矩阵的第1-200行数据,第二次分别读取第一索引矩阵和第二索引矩阵的201-400行矩阵,第三次从第一矩阵读取第401-600行数据,从第二矩阵读取第401-500行数据,即最后一次从两个索引矩阵读取到的行数不同。

从第一索引矩阵的读取x行数据以及从第二索引矩阵读取x行数据后,将每行数据作为序列的一个元素,计算第一索引矩阵的x行数据对应的第一序列与第二索引矩阵的x行数据对应的第二序列对比的积分,得到全局积分矩阵,回溯全局积分矩阵,获取第一索引矩阵的x行数据和第二索引矩阵的x行数据的行对比结果。

在比对两个序列时,不仅要考虑完全匹配的字符,还要考虑一个序列中的空格或间隙(或者,相反地,要考虑另一个序列中的插入部分)和不匹配,在序列比对中,需要找到最优的比对(最优比对大致是指要将匹配的数量最大化,将空格和不匹配的数量最小化)。具体可以为不同操作确定一个分数,例如,为匹配的字符添加分数、为空格和不匹配的字符减去分数。msa算法采用单序列对比的思路,单序列对比可以采用needleman-wunsch算法,具体对比过程参照下述说明。

假设第一索引矩阵的x行数据形成的第一序列标记为a,第二索引矩阵的x行数据形成的第二序列标记为b,第一序列a和第二序列b均包括x个元素,其中每个元素都是对应索引矩阵的一行。第一序列a和第二序列b生成的全局积分矩阵的大小为(x+1)*(x+1)。将第一序列a放在x正半轴,将第二序列b放在y负半轴。首先,初始化全局积分矩阵的第一行和第一列,全局积分矩阵的第一行和第一列是初始值,无需通过公式计算。例如,msa算法中,全局积分矩阵的第一行f[i][0]=d*i,全局积分矩阵的第一列f[0][j]=d*j,1≤i≤x,1≤j≤x,d表示f[i][j]继承前面序列相似度时的损耗,例如,d取值为0。表一为全局积分矩阵的初始化示意图,如表一所示,假设第一序列a为ggatcga,第二序列b为gaattcagtta,d=0。其中每个元素都为一个序列。

表一

对于全局矩阵的其他行和列按照下述方法计算:

(1)全局积分矩阵的每一个单元格对应的值记为f[i][j],第一序列的第i个元素记为a[i],第二序列的第j个元素记为b[j],其中,第一序列和第二序列的每个元素为一个序列,即a[i]和b[j]都为一个序列。

f[i][j]与序列a[i]和序列b[j]的相似度得分相关,但不仅仅是两序列的相似度得分值,还需要考虑前面项的相似性。示例性的,可以通过如下公式计算f[i][j]:

f[i][j]=max(

f[i-1][j-1]+s(a[i],b[j]),

f[i][j-1]+d,

f[i-1][j]+d

)

其中:f[i][j]为a[i]和b[j]的相似度;

s(a[i],b[j])为a[i]和b[j]做单序列对比时得到的相似度得分,即采用needleman–wunsch算法计算出的相似度得分,如果两个单序列相等则相似度得分为+2分,如果两个单序列相等不等则相似度得分为-1分;

d为f[i][j]继承前面序列相似度时的损耗。

(2)将第一序列的第i个元素a[i]和第二序列的第j个元素b[j]的对比得分填写在全局积分矩阵的相应位置上,在第一序列和第二序列的所有元素遍历完后,得到第一序列和第二序列的全局积分矩阵。

(3)回溯全局积分矩阵,找到回溯路径。具体回溯按以下方法回溯:

从全局积分矩阵的右下角开始回溯,如果(i,j)格的值跟其上边的值一样,下一步路径跳到其上边单元格即(i-1,j);如是(i,j)格的值跟其左边的值一样,下一步路径跳到其左边单元格即(i,j-1);如果(i,j)格的值跟其上边的值和下边的值均不一样,下一步路径跳到其左上角单元格。

(4)根椐回溯路径,找到第一序列和第二序列的匹配情况。

具体方法如下:从全局积分矩阵的右下角的路径开始,如果下一步路径只有x轴变了(对应左移),记录x轴,y轴为空,即x轴上的第一序列该行匹配为空。

如果下一步路径只有y轴变了(对应上移),记录y轴,x轴为空,即y轴上的第二序列该行匹配为空。

如果下一步路径x和y都变了(对应跳到左上角),该格对应到x轴的第一序列行与y轴的第二序列行匹配。

(5)上述匹配结果即为第一序列和第二序列的行匹配结果。

步骤s302、根据第一索引矩阵和第二索引矩阵的行对比结果,确定第一索引矩阵和第二索引矩阵的共同行。

其中,行对比结果包括:第一索引矩阵相对于第二索引矩阵的增加行和/或删除行,第一索引矩阵和第二索引矩阵的共同行为除增加行和删除行外二者都具有的行。

步骤s303、从第一索引矩阵中获取共同行,得到第一共同行矩阵,从第二索引矩阵中获取共同行,得到第二共同行矩阵。

步骤s304、交换第一共同行矩阵的行和列,得到第一交换矩阵,交换第二共同行矩阵的行和列,得到第二交换矩阵。

以第一共同行矩阵为例,假设第一共同行矩阵共有10行8列,则交换过程为:将第一共同行矩阵的第一列作为第一交换矩阵的第一行,将第一共同行矩阵的第二列作为第一交换矩阵的第二行,将第一共同行矩阵的第三列作为第一交换矩阵的第三行,依次类推,将第一共同行矩阵交换得到第一交换矩阵。也可以将第一共同行矩阵的第一行作为第一交换矩阵的第一列,将第一共同行矩阵的第二行作为第一交换矩阵的第二列,将第一共同行矩阵的第三行作为第一交换矩阵的第三列,依次类推,将第一共同行矩阵交换得到第一交换矩阵。上述两种交换方法得到的第一交换矩阵是相同的,都是一个8行10列的矩阵,采用同样的交换方法得到第二交换矩阵。

步骤s305、比较第一交换矩阵和第二交换矩阵,得到第一交换矩阵和第二交换矩阵的列对比结果。

具体的,使用对比算法比较第一交换矩阵和第二交换矩阵,得到的是第一交换矩阵和第二交换矩阵的行对比结果,由于第一交换矩阵和第二交换矩阵是由第一索引矩阵和第二索引矩阵的工行矩阵的行和列交换后得到的,因此,第一交换矩阵和第二交换矩阵的行对比结果实际上是第一索引矩阵和第二索引矩阵的列对比结果,列对比结果包括第一索引矩阵相对于第二索引矩阵增加列和/或删除列。

步骤s305的具体实现方式可参照步骤s301的实现方式,这里不再赘述。

步骤s306、根据第一索引矩阵和第二索引矩阵的行对比结果,确定单元格的数据变化结果。

具体的,将第一索引矩阵和第二索引矩阵的同一行的各单元格的索引进行对比,确定哪些单元格的数据有变化。

需要说明的是,实施例三中先确定第一索引矩阵和第二索引矩阵的行对比结果,然后根据行对比结果确定第一索引矩阵和第二索引矩阵的列对比结果,以及根据行对比结果确定单元格的数据变化结果。在其他实施例中,也可以先确定第一索引矩阵和第二索引矩阵的列对比结果,进一步根据列对对比结果确定第一索引矩阵和第二索引矩阵的行对比结果,以及根据列对结果确定单元格的数据变化结果。

图5为本发明实施例四提供的电子表格的数据处理方法的流程图,本实施例是对实施例一中步骤s105的一种可行实现方式的描述,如图5所示,本实施例提供的方法包括以下步骤:

步骤s401、在电子表格中显示差异单元格中的数据。

由于终端设备放弃用户对第一版本的编辑,将第一版本的版本号更新为第二版本的版本号,所以终端设备在将第一版本的版本号更新为第二版本的版本号之后,显示第二版本,相应的,在电子表格中显示差异单元格中的数据,具体为:在第二版本中增差异单元格中的数据。

可选的,差异单元格的颜色与电子表格中其他单元格的颜色不同,例如,差异表格的颜色用黄色标识,其他单元各的颜色为白色,以使得用户能够直观的看到两个版本的差异。对于新增行和新增列,在电子表格中显示新增行和新增列的数据,对于删除行和删除列,在电子表格中显示删除行和删除列的数据,对于数据发生变化的单元格,在单元格中显示变化前和变化后的数据。参照图2所示,图中灰色区域表格差异单元格,第4行数据为新插入的一行数据,第5行d列单元格为数据变化的单元格。

步骤s402、接收用户对差异单元格中的待合并单元格的选中操作。

其中,待合并单元格包括差异单元格中的全部单元格或部分单元格。用户要先选中待合并单元格,用户每次可以只选中差异单元格中的部分单元格进行合并,用户也可以一次性选中所有差异单元格。

步骤s403、接收用户对差异单元格中的待合并单元格输入的数据合并指示。

该数据合并指示用于指示保留待合并单元格中的第一版本的数据或第二版本的数据。参照图2所示,使用我的按钮和使用他的按钮用于输入数据合并指示,用户通过点击使用我的按钮或使用他的按钮数据输入合并指示。

步骤s404、根据数据合并指示调整待合并单元格中的数据。

具体的,如果用户选择保留待合并单元格中第一版本的数据,则删除待合并单元格中第二版本的数据。如果用户选择保留待合并单元格中第二版本的数据,则删除待合并单元格中第一版本的数据。如果差异单元格的颜色与电子表格中其他单元格的颜色不同,则在删除待合并单元格中的第一版本的数据或第二版本的数据后,将待合并单元格的颜色调整为其他单元格的颜色。

本实施例中,通过在电子表格中显示差异单元格中的数据,接收用户对差异单元格中的待合并单元格的选中操作,接收用户对差异单元格中的待合并单元格输入的数据合并指示,数据合并指示用于指示保留所述待合并单元格中的第一版本的数据或第二版本的数据,根据数据合并指示调整待合并单元格中的数据。使得用户能够了解电子表格的差异,并根据用户的指示对电子表格的数据进行合并。

图6为本发明实施例五提供的电子表格的数据合并装置的结构示意图,该装置可以集成在终端设备中,如图6所示,本实施例提供的电子表格的数据合并装置包括:

接收模块11,用于接收用户在当前编辑的电子表格的第一版本上输入的版本对比指示;

更新模块12,用于根据所述版本对比指示,取消用户对所述第一版本的编辑,并将所述第一版本更新为版本管理服务器当前保存的所述电子表格的第二版本;

差异确定模块13,用于确定所述第一版本相对于所述第二版本的差异单元格;

数据合并模块14,用于合并所述差异单元格中的数据;

提交模块15,用于提交合并后的版本。

图7为本发明实施例六提供的电子表格的数据合并装置的结构示意图,如图7所示,本实施例在图6所示装置的基础上,所述差异确定模块13,包括:

转换子模块131,用于将所述第一版本按页转换为第一矩阵,将所述第二版本按页转换为第二矩阵,所述第一矩阵和所述第二矩阵均为二维矩阵;

对比子模块132,用于比较所述第一矩阵和所述第二矩阵,得到所述差异单元格。

所述对比子模块132,具体用于:

将所述第一矩阵转换为第一索引矩阵,将所述第二矩阵转换为第二索引矩阵,其中,所述第一矩阵和所述第二矩阵中相同元素对应的索引相同;

所述第一索引矩阵和所述第二索引矩阵,得到所述差异单元格。

可选的,所述对比子模块132比较所述第一索引矩阵和所述第二索引矩阵,得到所述差异单元格,具体为:

比较所述第一索引矩阵和所述第二索引矩阵,得到所述第一索引矩阵和所述第二索引矩阵的行对比结果;

根据所述第一索引矩阵和所述第二索引矩阵的行对比结果,确定所述第一索引矩阵和所述第二索引矩阵的共同行;

从所述第一索引矩阵中获取所述共同行,得到第一共同行矩阵,从所述第二索引矩阵中获取所述共同行,得到第二共同行矩阵;

交换所述第一共同行矩阵的行和列,得到第一交换矩阵,交换所述第二共同行矩阵的行和列,得到第二交换矩阵;

比较所述第一交换矩阵和所述第二交换矩阵,得到所述第一索引矩阵和所述第二索引矩阵的列对比结果;

根据所述第一索引矩阵和所述第二索引矩阵的行对比结果,确定单元格的数据变化结果。

可选的,所述对比子模块132比较所述第一索引矩阵和所述第二索引矩阵,得到所述第一索引矩阵和所述第二索引矩阵的行对比结果,具体为:

按照顺序每次读取所述第一索引矩阵的x行数据和所述第二索引矩阵的x行数据,x小于m,且x小于n,m为所述第一索引矩阵的总行数,n为所述第二索引矩阵的总行数;

将读取的每行数据作为序列的一个元素,计算所述第一索引矩阵的x行数据对应的第一序列与所述第二索引矩阵的x行数据对应的第二序列对比的积分,得到全局积分矩阵;

回溯所述全局积分矩阵,获取所述第一索引矩阵的x行数据和所述第二索引矩阵的x行数据的行对比结果。

可选的,所述对比子模块132将每行数据作为序列的一个元素,计算所述第一索引矩阵的x行数据对应的第一序列与所述第二索引矩阵的x行数据对应的第二序列对比的积分,得到全局积分矩阵,具体为:

初始化所述全局积分矩阵的第一行和第一列;

通过如下公式所述计算积分矩阵的其他行和其他列:

f[i][j]=max(

f[i-1][j-1]+s(a[i],b[j]),

f[i][j-1]+d,

f[i-1][j]+d

)

其中,f[i][j]为a[i]和b[j]的相似度,a[i]为所述第一序列的第i个元素,b[j]为所述第二序列的第j个元素;

s(a[i],b[j])为a[i]和b[j]做单序列对比时得到的相似度得分;

d为f[i][j]继承前面序列相似度时的损耗。

图8为本发明实施例七提供的电子表格的数据合并装置的结构示意图,如图8所示,本实施例的装置在图6所示装置的基础上,还包括:

显示模块16,用于在所述电子表格中显示所述差异单元格中的数据;

所述数据合并模块14,具体用于:

接收用户对所述差异单元格中的待合并单元格的选中操作;

接收用户对所述差异单元格中的待合并单元格输入的数据合并指示,所述数据合并指示用于指示保留所述待合并单元格中的第一版本的数据或第二版本的数据;

根据所述数据合并指示调整所述待合并单元格中的数据。

可选的,所述待合并单元格包括所述差异单元格中的全部单元格或部分单元格。

可选的,所述差异单元格的颜色与所述电子表格中其他单元格的颜色不同。

图9为本发明实施例八提供的电子表格的数据合并装置的结构示意图,如图9所示,本实施例的装置在图8所示装置的基础上,还包括:

判断模块17,用于判断所述第一版本的版本号与所述第二版本的版本号是否相同;

所述更新模块12,具体用于:当所述第一版本的版本号与所述第二版本的版本号不同时,取消用户对所述第一版本的编辑,并将所述第一版本更新为版本管理服务器当前保存的所述电子表格的第二版本。

本实施例的装置,可用于执行上述实施例一至实施例四提供的方法,具体实现方式和技术效果类似,这里不再赘述。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1