文件处理方法、装置、电子设备及存储介质与流程
未命名
09-10
阅读:64
评论:0

1.本技术涉及数据处理技术领域,具体而言,涉及一种文件处理方法、装置、电子设备及存储介质。
背景技术:
2.在网络游戏的开发中,开发人员常会使用到excel文件来对游戏内容进行配置,并将这些excel文件提交至svn、git等版本控制工具中进行处理。由于在版本控制工具中,excel文件被当作二进制文件进行处理。因此,当多人对相同的excel文件进行修改和提交时(如分支合并),往往会出现excel文件修改冲突的情况,从而无法保证生成的最新版本的文件的准确性。因此,需要通过文件比对和融合的方式以解决文件修改冲突的问题。
3.现有技术中,常采用的excel文件的比较方法是基于最长公共子序列算法实现的,其比较过程是根据最长公共子序列算法计算待比较的两个excel文件中行和列的相似度、找出两个excel文件中行和列的对应关系,由此得出行、列的新增和删除和单元格的修改,并在此基础上完成excel文件的融合过程。
4.但是,上述方法的比较方式较为片面,比较结果的准确性较差,从而基于比较结果进行融合,生成的融合结果准确性较差。
技术实现要素:
5.本技术的目的在于,提供一种文件处理方法、装置、电子设备及存储介质,以便提升表格文件比对和融合的准确性。
6.为实现上述目的,本技术实施例采用的技术方案如下:
7.第一方面,本技术实施例提供了一种文件处理方法,包括:根据表格类型的文件的预设结构信息,将各待处理的表格文件进行转换,生成各待处理的表格文件的树状数据,所述预设结构信息包括:子单元的层级关系;不同待处理的表格文件中对应的子单元之间具有相同的标识信息;所述待处理的表格文件包括:原始表格文件、本地表格文件和远端表格文件;
8.对各待处理的表格文件的树状数据进行比较,得到各待处理的表格文件的树状数据中各节点的比较结果,所述比较结果表征不同的待处理的表格文件之间的相对修改内容;
9.根据所述本地表格文件的树状数据中各节点的比较结果以及所述远端表格文件对应的树状数据中各节点的比较结果,确定所述本地表格文件的树状数据中各节点的融合状态以及所述远端表格文件的树状数据中各节点的融合状态;
10.根据所述远端表格文件的树状数据中各节点的比较结果,对所述本地表格文件的树状数据中节点的融合状态进行更新,并根据所述本地表格文件更新后的树状数据中的节点的融合状态以及节点类型,对所述本地表格文件进行更新。
11.第二方面,本技术实施例还提供了一种文件处理装置,包括:生成模块、比较模块、
确定模块、更新模块;
12.所述生成模块,用于根据表格类型的文件的预设结构信息,将各待处理的表格文件进行转换,生成各待处理的表格文件的树状数据,所述预设结构信息包括:子单元的层级关系;不同待处理的表格文件中对应的子单元之间具有相同的标识信息;所述待处理的表格文件包括:原始表格文件、本地表格文件和远端表格文件;
13.所述比较模块,用于对各待处理的表格文件的树状数据进行比较,得到各待处理的表格文件的树状数据中各节点的比较结果,所述比较结果表征不同的待处理的表格文件之间的相对修改内容;
14.所述确定模块,用于根据所述本地表格文件的树状数据中各节点的比较结果以及所述远端表格文件对应的树状数据中各节点的比较结果,确定所述本地表格文件的树状数据中各节点的融合状态以及所述远端表格文件的树状数据中各节点的融合状态;
15.所述更新模块,用于根据所述远端表格文件的树状数据中各节点的比较结果,对所述本地表格文件的树状数据中节点的融合状态进行更新,并根据所述本地表格文件更新后的树状数据中的节点的融合状态以及节点类型,对所述本地表格文件进行更新。
16.第三方面,本技术实施例提供了一种电子设备,包括:处理器、存储介质和总线,存储介质存储有处理器可执行的机器可读指令,当电子设备运行时,处理器与存储介质之间通过总线通信,处理器执行机器可读指令,以实现如第一方面中提供的文件处理方法。
17.第四方面,本技术实施例提供了一种计算机可读存储介质,该存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如第一方面提供的文件处理方法。
18.本技术的有益效果是:
19.本技术提供一种文件处理方法、装置、电子设备及存储介质,该方法基于表格类型的文件的预设结构信息实现对待处理的表格文件的转换,生成待处理的表格文件的树状数据,从而基于待处理的表格文件的树状数据进行树比较,确保了不同表格文件之间各子单元的对应关系的准确性,从而保证了不同待处理的表格文件的比较结果的准确性,而基于比较结果,可进行本地表格文件和远端表格文件的融合和冲突判定,以确定出本地表格文件和远端表格文件之间的融合内容,从而实现本地表格文件和远端表格文件之间的自动融合处理,提高了文件融合的准确性。
20.另外,通过提供的windows平台图形界面,将比较结果和融合状态按照预设的展示样式进行展示,使得用户可以便捷和清晰地查看比较和融合结果、进行冲突处理,减少了人工处理excel文件冲突的工作量、提高了excel文件冲突处理的准确性和分支开发过程中excel文件的处理效率。
附图说明
21.为了更清楚地说明本技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
22.图1为本技术实施例提供的文件处理方法的流程示意图一;
23.图2为本技术实施例提供的文件处理方法的流程示意图二;
24.图3为本技术实施例提供的一种表格文件的树状数据示意图;
25.图4为本技术实施例提供的文件处理方法的流程示意图三;
26.图5为本技术实施例提供的文件处理方法的流程示意图四;
27.图6为本技术实施例提供的文件处理方法的流程示意图五;
28.图7为本技术实施例提供的文件处理方法的流程示意图六;
29.图8为本技术实施例提供的文件处理方法的流程示意图七;
30.图9为本技术实施例提供的文件处理方法的流程示意图八;
31.图10为本技术实施例提供的文件处理方法的流程示意图九;
32.图11为本技术实施例提供的文件处理方法的流程示意图十;
33.图12为本技术实施例提供的一种文件处理装置的示意图;
34.图13为本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
35.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,应当理解,本技术中附图仅起到说明和描述的目的,并不用于限定本技术的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本技术中使用的流程图示出了根据本技术的一些实施例实现的操作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本技术内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
36.另外,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本技术实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本技术的实施例的详细描述并非旨在限制要求保护的本技术的范围,而是仅仅表示本技术的选定实施例。基于本技术的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
37.需要说明的是,本技术实施例中将会用到术语“包括”,用于指出其后所声明的特征的存在,但并不排除增加其它的特征。
38.在网络游戏的开发中,开发人员常会使用到excel文件来对游戏内容进行配置,并将这些excel文件纳入svn(subversion,开放源代码的版本控制系统)、git(开源的分布式版本控制系统)等版本控制工具中。由于在这些版本控制工具中,excel文件被当作二进制文件进行处理。因此,当多人对相同的excel文件进行修改和提交时(如分支合并),往往会出现excel文件冲突的情况。这些冲突通常需要提交者通过excel文件比较工具进行比对,并手动修改excel文件和重新提交。为了提高这一冲突处理过程的效率和准确性,通常需要高效、准确的excel文件比较和融合系统。
39.在常见的excel文件比较和融合系统中,常见的excel文件的比较方法一般是基于最长公共子序列(longest common subsequence)算法。其比较过程根据最长公共子序列算法计算待比较的两个二维表格的行和列的相似度、找出两个excel表格中行和列的对应关系,由此得出行、列的新增和删除、单元格的修改,并在此基础上完成excel文件的融合过程。
40.当前的excel文件比较和融合系统通常存在以下三个问题:
41.1.无法保证比较和融合结果的准确性
42.如上文提到,目前常用的excel文件的比较方法是基于最长公共子序列的,这种方法是基于相似度计算excel行和列的对应关系的,根据具体使用场景和数据的不同,可能存在误差或者无法处理的情况(例如相似行和列的修改、或整行整列的新增和删除等),无法始终得出准确的excel文件的比较结果,并进一步影响excel文件融合的准确性和稳定性。
43.2.部分代码框架对excel文件读写的支持不够完善
44.目前常见的代码如python、java、c#等均有多种代码库支持对excel文件的读写,但由于excel软件(即office软件)版本较多(如office2016、office365、office2019等)和excel文件内容的多样性(包含数字、文本、超链接、格式、批注、公式、筛选和数据验证等),部分代码库对excel文件读写的支持并不完善或缺乏维护,打开和生成特定版本的excel文件时可能导致部分内容丢失(如批注和格式丢失),无法保证融合生成的文件与原始文件在上述各个方面均保持一致。
45.3.未实现对excel文件比较和融合的跨平台支持
46.现有的excel文件比较和融合系统通常是在windows平台完成的,而未实现跨平台下的excel文件的比较和融合。在高强度的分支开发流程下,通过服务器自动执行融合分支可以大大提高开发流程的效率,即对excel文件比较和融合系统的跨平台支持提出了要求。
47.基于现有excel文件比较和融合系统的准确性、excel文件支持和跨平台三方面的问题,本技术提供了一种基于结构信息的跨平台excel文件比较和融合系统,将excel文件的比较和融合转化为树状数据进行处理,来实现多平台下对多版本excel文件的比较和融合,从而提高excel文件融合的准确性和效率。
48.图1为本技术实施例提供的文件处理方法的流程示意图一;本方法的执行主体可以是计算机设备,如图1所示,该方法可包括:
49.s101、根据表格类型的文件的预设结构信息,将各待处理的表格文件进行转换,生成各待处理的表格文件的树状数据,预设结构信息包括:子单元的层级关系;不同待处理的表格文件中对应的子单元之间具有相同的标识信息;待处理的表格文件包括:原始表格文件、本地表格文件和远端表格文件。
50.表格类型的文件通常是由行、列以及行和列组成的单元格等结构构成,例如常用的excel文件。表格类型的文件其结构信息一般是固定的,通常均是由工作表、行、列、单元格等子单元构成,而各子单元之间的层级关系也是预先设定好的,也即,这里的预设结构信息可以包括构成表格类型的文件的各子单元及各子单元之间的层级关系,根据预设的结构信息,可以对表格类型的文件进行格式转换。本实施例中可以是将表格文件转换为树状数据进行处理。
51.在一些实施例中,针对不同的表格文件而言,为了便于进行文件之间的比较,确保比较的对应性,对于不同的表格文件中对应的子单元可分配相同的标识信息。例如:表格文件1中工作表1与表格文件2中工作表1具有相同的标识信息,表格文件1中工作表1下的行1与表格文件2中工作表1下的行1具有相同的标识信息,即不同表格文件中对应的工作表、行和列具有相同的id且每个id具有唯一性,从而便于对不同表格文件中对应子单元进行索引。
52.可选地,本方案所涉及的待处理的表格文件可以包括原始表格文件、本地表格文件和远端表格文件。其中,原始表格文件可以指基础表格文件(或旧版本的表格文件,base文件),本地表格文件可以指本地修改后的文件(或本地分支的表格文件,local文件),远端表格文件可以指远端存储的最新版本的表格文件(或远端分支的表格文件,remote文件)。本地表格文件和远端表格文件的共同祖先版本则为原始表格文件。
53.远端表格文件也可以理解为当前的最新表格文件,其作为公共文件存在,当存在多个用户对同一原始表格文件进行修改时,由于不同的用户可能在修改时候存在先后顺序,每个用户在本地修改后会将修改后的表格文件提交至远端进行存储,原则上后一个用户的修改应该是基于前一个用户修改提交的最新表格文件的基础上进行修改,也即后一个用户的修改应该是基于远端表格文件进行修改的,但是由于数据可能存在不同步的问题,无法及时的获取到远端表格文件,故每个用户在进行本地修改时,通常是基于原始表格文件进行修改,生成本地表格文件,再将本地表格文件与远端表格文件进行融合,得到本地修改后的最新文件进行提交,从而保证文件修改的准确性和完整性。
54.示例性的:a和b都要对原始表格文件进行修改,a先在本地进行了修改,并提交到了远端,而b在本地修改的时候,按理说应该是基于a提交的存储与远端的最新版本表格文件(远端表格文件)进行修改,但是可能存在数据不同步,b未获取到远端表格文件,b也是基于原始表格文件进行修改的,那么,可能a和b修改的内容会存在冲突,需要b将本地修改的(本地表格文件)与远端表格文件进行比对和融合,从而生成修改后的文件。
55.s102、对各待处理的表格文件的树状数据进行比较,得到各待处理的表格文件的树状数据中各节点的比较结果,比较结果表征不同的待处理的表格文件之间的相对修改内容。
56.需要说明的是,文件的比较过程通常发生在用户查看本地文件修改或查看某一文件在两个版本(或分支)中的差异时,主要涉及两个文件:原始表格文件和本地表格文件。
57.而融合过程则经常发生在用户提交本地修改或分支融合过程中,主要涉及三个文件:原始表格文件、本地表格文件和远端表格文件。且融合过程需要基于比较过程中生成的比较结果进行融合判定。
58.当本方法应用于文件比较场景时,上述的待处理的表格文本可以包括:原始表格文件、本地表格文件。
59.当本方法应用于文件融合场景时,上述的待处理的表格文本可以包括:原始表格文件、本地表格文件和远端表格文件。
60.可选地,可基于对待处理的表格文件转换后的得到的待处理的表格文件的树状数据进行树比对,其中,树状数据中是以树节点的形式对应展示表格文件中的各子单元,对表格文件的比较实则是对表格文件中各子单元的比对,那么也就是对树状数据中各节点的比较,从而可生成各待处理的表格文件的树状数据中各节点的比较结果。每个待处理的表格文件均对应有树状数据,而每个树状数据均可对应一数据表,用于记录树状数据中节点的属性信息,而节点的比较结果可以为节点的属性信息之一。
61.比较结果可以表征不同的待处理的表格文件之间的相对修改内容,例如:待比较的两个表格文件分别为a和b,那么,表格文件a的树状数据中节点1(假设为行1)的比较结果为新增时,则可表示:表格文件a相对于表格文件b来说新增了行1。
62.s103、根据本地表格文件的树状数据中各节点的比较结果以及远端表格文件对应的树状数据中各节点的比较结果,确定本地表格文件的树状数据中各节点的融合状态以及远端表格文件的树状数据中各节点的融合状态。
63.在进行表格融合时,在上述已进行说明,需要对本地表格文件和远端表格文件中的修改进行融合,那么,可先分别得到本地表格文件的树状数据中各节点的比较结果以及远端表格文件对应的树状数据中各节点的比较结果。从而根据本地表格文件的树状数据中各节点的比较结果以及远端表格文件对应的树状数据中各节点的比较结果进行两个表格文件的融合冲突判定,根据判定结果分别生成本地表格文件的树状数据中各节点的融合状态以及远端表格文件的树状数据中各节点的融合状态。
64.在一些实施例中,融合状态可以指示节点是否可以进行融合,当融合状态为可融合时,可将可融合的节点进行融合,而当冲突时,则说明针对同一节点出现了不同的修改方式,则需要解决冲突。
65.s104、根据远端表格文件的树状数据中各节点的比较结果,对本地表格文件的树状数据中节点的融合状态进行更新,并根据本地表格文件更新后的树状数据中的节点的融合状态以及节点类型,对本地表格文件进行更新。
66.在一些实施例中,在比较结果的基础上,还可基于远端表格文件的树状数据中各节点的比较结果,对本地表格文件的树状数据中节点的融合状态进行更新,以得到更加准确的本地表格文件的树状数据中节点的融合状态。
67.可选地,可基于本地表格文件更新后的树状数据中的节点的融合状态,以及节点类型,对本地表格文件进行修改更新,以生成本地修改后的目标表格文件,而本地修改后的目标表格文件再进行提交后,则可对当前的远端表格文件进行更新,得到新的远端表格文件。
68.综上,本实施例提供的文件处理方法,基于表格类型的文件的预设结构信息实现对待处理的表格文件的转换,生成待处理的表格文件的树状数据,从而基于待处理的表格文件的树状数据进行树比较,确保了不同表格文件之间各子单元的对应关系的准确性,从而保证了不同待处理的表格文件的比较结果的准确性,而基于比较结果,可进行本地表格文件和远端表格文件的融合和冲突判定,以确定出本地表格文件和远端表格文件之间的融合内容,从而实现本地表格文件和远端表格文件之间的自动融合处理,提高了文件融合的准确性。
69.图2为本技术实施例提供的文件处理方法的流程示意图二;可选地,在常规的表格类型的文件中,子单元均可包括:文件表、行、列、单元格;本实施例是以包含文件表、行、列、单元格四种类型的子单元的表格文件进行说明。
70.可选地,步骤s101中,根据表格类型的文件的预设结构信息,将各待处理的表格文件进行转换,生成各待处理的表格文件的树状数据,可以包括:
71.s201、根据表格类型的文件中各子单元的层级关系以及预先配置的子单元筛选条件及标识生成方式,对各待处理的表格文件中的待处理的子单元进行筛选,并为筛选出的各子单元分配标识信息。
72.在一些实施例中,由于表格文件中包含的子单元数量是较多的,针对一种类型的子单元也可能包含多个,例如包含多行、多列、多个工作表等。而对于表格文件的比较可能
往往只是对表格文件中的部分子单元进行比较,无需全部进行比较。
73.基于此,本实施例中可根据预先配置的子单元筛选条件及标识生成方式,按照预设结构信息中子单元的层级关系,对各待处理的表格文件中的待处理的子单元进行筛选,并为筛选出的各子单元分配标识信息。
74.子单元筛选条件中可指示所要挑选出的子单元的标识,子单元筛选条件可分别包括:工作表筛选条件、行筛选条件、列筛选条件和单元格筛选条件。
75.关于子单元标识的生成,针对工作表,可以采用工作表的标题或者工作表的序号作为其标识信息;针对行,可以采用某两列的第一个单元格作为行的标识信息或者采用行号作为行的标识信息;针对列,可以采用某一行的前n个单元格作为列的标识信息或者采用列号作为列的标识信息;针对单元格,可以拼接行的标识信息和列的标识信息作为单元格的标识信息。
76.s202、根据筛选出的各子单元的层级关系,自顶向下构建待处理的表格文件的树状数据,树状数据包含的层数与子单元的类型数量一致,各层包含的节点的类型根据各子单元的层级关系确定。
77.可选地,表格类型的文件中文件表、行、列、单元格之间存在较为明显的层级关系:例如:表格文件包含多张工作表、每张工作表包含多行和多列、每行和每列包含多个不为空的单元格。
78.将表格文件生成树状数据的过程可如下:
79.1)读取待处理的表格文件,初始化根节点,即文件节点。
80.2)遍历待处理的表格文件中的所有工作表,通过工作表筛选条件和工作表的标识生成规则,对待处理的表格文件中待处理的工作表生成工作表节点,并依次放入根节点的子节点列表中。
81.3)对所有待处理的工作表,分别遍历行和列,根据行和列的筛选条件和标识生成规则,对待处理的行或列生成行节点或列节点,并依次放入工作表节点的子节点列表中。
82.4)对每张工作表遍历其中所有非空单元格,通过单元格筛选条件和标识生成规则,对待处理的单元格生成单元格节点,并找到该单元格相应的行和列生成的节点,将该单元格节点分别放入行节点和列节点的子节点列表中。
83.通过上述算法流程,可以将待处理的表格文件转换为以文件节点为根节点、自上而下各层分别为文件节点、工作表节点、行和列节点、单元格节点的四层树状数据。
84.图3为本技术实施例提供的一种表格文件的树状数据示意图。
85.如图3所示,是以待处理的表格文件为excel文件为例,展示了excel文件所转换为树状数据的示意图,自顶向下各层依次为:excel文件、工作表、行或列、单元格。
86.如图3所示意的,表征了各层之间子单元的包含关系,excel文件下包括工作表1和工作表2等,工作表1下包含行1、行2、列1和列2等,而由行1和列1构成单元格1,由行1列2构成单元格2,行2列1构成单元格3,行2列2构成单元格4等。
87.图4为本技术实施例提供的文件处理方法的流程示意图三;可选地,步骤s102中,对各待处理的表格文件的树状数据进行比较,得到各待处理的表格文件的树状数据中各节点的比较结果,可以包括:
88.s401、将本地表格文件的树状数据与原始表格文件的树状数据中对应节点进行比
较,生成本地表格文件的树状数据中各节点的比较结果,比较结果包括:新增、删除、修改及无操作。
89.在一些实施例中,由于本地表格文件和远端表格文件均是基于原始表格文件进行修改后得到的,那么,可先将本地表格文件与原始表格文件进行比较,得到本地表格文件的比较结果;再将远端表格文件与原始表格文件进行比较,得到远端表格文件的比较结果。
90.那么,可以是将本地表格文件的树状数据与原始表格文件的树状数据中对应节点进行比较,生成本地表格文件的树状数据中各节点的比较结果。其中,对应节点进行比较可以指两个树状数据中相对应的两个节点(具有相同标识信息的两个节点)分别进行比较。例如:本地表格文件的树状数据中节点1与原始表格文件的树状数据中节点1进行比较,本地表格文件的树状数据中节点2与原始表格文件的树状数据中节点2进行比较等。
91.s402、将远端表格文件的树状数据与原始表格文件的树状数据中对应节点进行比较,生成远端表格文件的树状数据中各节点的比较结果。
92.同样的,通过将远端表格文件的树状数据与原始表格文件的树状数据中对应节点进行比较,生成远端表格文件的树状数据中各节点的比较结果。
93.图5为本技术实施例提供的文件处理方法的流程示意图四;可选地,步骤s401中,将本地表格文件的树状数据与原始表格文件的树状数据中对应节点进行比较,生成本地表格文件的树状数据中各节点的比较结果,可以包括:
94.s501、若当前待比较的对应节点在本地表格文件的树状数据中为空,且在原始表格文件的树状数据中不为空,则确定对应节点在原始表格文件的树状数据中的比较结果为删除。
95.在一些实施例中,可以先将本地表格文件的树状数据以及原始表格文件的树状数据转换为节点字典形式,从而通过遍历节点字典中的所有键进行节点索引,实现对所有对应节点的比较。
96.节点字典可以指以节点的标识为键,以节点本身为值的形式来表示树状数据。例如:将树状数据中行1的标识假设为a作为键,那么通过键进行索引时,通过查询到键a,可以查询到行1,从而对行1进行比较。
97.当前上述将树状数据转换为节点字典形式仅仅是为了便于索引到对应节点,实际应用中,也可不做上述处理。
98.第一种情况,若当前待比较的对应节点在本地表格文件的树状数据中为空,而在原始表格文件的树状数据中不为空,也就是说,其实在本地表格文件中对该节点进行了删除,而由于是删除状态,那么,本地表格文件的树状数据中则不包含该对应节点,无法进行节点比较结果的记录,这种情况下,则可在原始表格文件的树状数据中将该对应节点的比较结果记录为删除。
99.s502、若当前待比较的对应节点在本地表格文件的树状数据中不为空,且在原始表格文件的树状数据中为空,则确定对应节点在本地表格文件的树状数据中的比较结果为新增。
100.第二种情况,若当前待比较的对应节点在本地表格文件的树状数据中不为空,而在原始表格文件的树状数据中为空,也就是说,其实在本地表格文件中对该节点进行了增加,由于本地表格文件的树状数据中存在该对应节点,则可在本地表格文件的树状数据中
记录该对应节点的比较结果为新增。
101.s503、若当前待比较的对应节点在本地表格文件的树状数据中以及在原始表格文件的树状数据中均不为空,则递归查找对应节点的子节点中的单元格节点,根据单元格节点的值,确定对应节点分别在本地表格文件的树状数据中以及在原始表格文件的树状数据中的比较结果。
102.第三种情况,若当前待比较的对应节点在本地表格文件的树状数据中以及在原始表格文件的树状数据中均不为空,且该对应节点为单元格节点,则可根据该单元格节点分别在本地表格文件中的值以及在原始表格文件中的值,确定该对应节点的比较结果。
103.而若该对应节点不为单元格节点,则该对应节点的比较结果则由该对应节点的子节点比较结果决定,可通过递归比较的方式,依次向下找到该对应节点对应的单元格子节点,并按照单元格节点的比较方式,确定对应节点的比较结果。
104.s504、根据原始表格文件的树状数据中各节点的比较结果以及本地表格文件的树状数据中各节点的比较结果,确定本地表格文件的树状数据中各节点的比较结果。
105.可选地,由于本地表格文件相对于原始表格文件的一些类型的比较结果是记录在原始表格文件的树状数据的节点比较结果中的,那么,可以综合原始表格文件的树状数据中各节点的比较结果以及本地表格文件的树状数据中各节点的比较结果,得到本地表格文件的树状数据中各节点的比较结果。
106.可选地,步骤s503中,根据单元格节点的值,确定对应节点分别在本地表格文件的树状数据中以及在原始表格文件的树状数据中的比较结果,可以包括:若单元格节点的值在本地表格文件的树状数据中以及在原始表格文件的树状数据中不一致,则确定对应节点分别在本地表格文件的树状数据中以及在原始表格文件的树状数据中的比较结果为修改。
107.对于上述第三种情况中,当对应节点为单元格节点时,对于单元格节点的比较,当单元格节点的值在本地表格文件的树状数据中以及在原始表格文件的树状数据中不一致时,也即在本地表格文件以及原始表格文件中相同的单元格具有不同的数据,则可确定该对应节点在本地表格文件的树状数据中以及在原始表格文件的树状数据中的比较结果均为修改。而若单元格节点的值在本地表格文件的树状数据中以及在原始表格文件的树状数据中一致时,则可确定该对应节点在本地表格文件的树状数据中以及在原始表格文件的树状数据中的比较结果均为无修改。
108.而本地表格文件的树状数据以及原始表格文件的树状数据中所有对应节点的比较结果均为没有修改时,则得到两个表格文件的比较结果为无操作;否则,比较结果则为修改。
109.图6为本技术实施例提供的文件处理方法的流程示意图五;可选地,步骤s504中,根据原始表格文件的树状数据中各节点的比较结果以及本地表格文件的树状数据中各节点的比较结果,确定本地表格文件的树状数据中各节点的比较结果,可以包括:
110.s601、获取本地表格文件的树状数据中节点的比较结果为新增和修改的候选节点以及原始表格文件的树状数据中节点的比较结果为删除和修改的候选节点。
111.可选地,可遍历本地表格文件的树状数据中所有节点的比较结果,获取所有比较结果为新增和修改的节点作为候选节点;以及遍历原始表格文件的树状数据中所有节点的比较结果,获取所有比较结果为删除和修改的节点作为候选节点。
112.s602、根据各候选节点的比较结果,生成本地表格文件的树状数据中各节点的比较结果。
113.那么,可由上述得到的各候选节点的比较结果,生成本地表格文件的树状数据中各节点的比较结果。
114.如下表1为生成的表格文件的树状数据中各节点的比较结果示意:
115.表1
[0116][0117][0118]
其中,倒数后四行(工作表3、表3-行2、表3-列5、表3-单元格(2,5))则为原始表格文件的树状数据中比较结果为修改和删除的节点的比较结果,将其作为构成本地表格文件的树状数据中节点比较结果的一部分。
[0119]
可选地,远端表格文件的树状数据中节点的比较结果生成方式可参照上述步骤执行,此处不再赘述。
[0120]
图7为本技术实施例提供的文件处理方法的流程示意图六;可选地,步骤s103中,根据本地表格文件的树状数据中各节点的比较结果以及远端表格文件对应的树状数据中各节点的比较结果,确定本地表格文件的树状数据中各节点的融合状态以及远端表格文件的树状数据中各节点的融合状态,可以包括:
[0121]
s701、对本地表格文件的树状数据与远端表格文件的树状数据中对应节点的比较结果为新增的节点,在树状数据中补全对应节点的子节点以及子节点的比较结果,并将对应节点的比较结果由新增更新为修改,分别得到本地表格文件的树状数据中更新后的各节点的比较结果以及远端表格文件的树状数据中更新后的各节点的比较结果。
[0122]
通过上述实施例,可分别得到本地表格文件的树状数据中各节点的比较结果以及远端表格文件的树状数据中各节点的比较结果。接下来可根据对应节点的比较结果对本地表格文件的树状数据中各节点的比较结果以及远端表格文件的树状数据中各节点的比较
结果进行更新。以保证进行融合状态判定时,所基于的各节点的比较结果是准确的,从而提高融合结果的准确性。
[0123]
可选地,对本地表格文件的树状数据与远端表格文件的树状数据中对应节点(同一id下)比较结果均为新增的节点进行子树的递归比较(这里的比较方式可以参照步骤s501-s503的三种情况进行比较),补全两棵子树中所有节点(对应节点的子节点)的比较结果、并修改子树根节点(对应节点)的比较结果。
[0124]
表2为本地表格文件的树状数据中更新后的各节点的比较结果的示意:
[0125]
表2
[0126]
节点比较结果工作表2修改表2-行5修改表2-列6修改表2-单元格(5,6)修改工作表3修改表3-行1修改表3-列5修改表3-单元格(1,5)修改工作表5删除表5-行1删除表5-列6删除表5-单元格(1,6)删除
[0127]
表3为远端表格文件的树状数据中更新后的各节点的比较结果的示意:
[0128]
表3
[0129]
[0130][0131]
s702、对本地表格文件的树状数据中更新后的各节点与远端表格文件的树状数据中更新后的各节点求并集,得到节点集合。
[0132]
可选地,可对本地表格文件的树状数据中更新后的各节点与远端表格文件的树状数据中更新后的各节点求并集,得到节点集合。在一些实施例中,得到的节点集合可以以队列的形式表示,也即生成所有节点的队列,这样在遍历节点进行冲突判定时,可以依次从队列的头部依次取当前需要遍历的节点,可以避免节点遍历的重复,当前也可以是以序列的形式表示节点集合。
[0133]
s703、依次遍历节点集合中的各节点,并根据当前遍历到的节点分别在本地表格文件的树状数据中的比较结果以及在远端表格文件的树状数据中的比较结果,生成本地表格文件的树状数据中更新后的各节点的融合状态以及远端表格文件的树状数据中更新后的各节点的融合状态,融合状态包括:无操作、可融合、冲突、待新增、待删除、待修改。
[0134]
可选地,通过依次遍历节点集合中的各节点,根据当前遍历到的节点分别在本地表格文件的树状数据中的比较结果以及在远端表格文件的树状数据中的比较结果,生成本地表格文件的树状数据中更新后的各节点的融合状态以及远端表格文件的树状数据中更新后的各节点的融合状态。
[0135]
如下为具体的融合状态生成方式:
[0136]
图8为本技术实施例提供的文件处理方法的流程示意图七;可选地,步骤s703中,根据当前遍历到的节点分别在本地表格文件的树状数据中的比较结果以及在远端表格文件的树状数据中的比较结果,生成本地表格文件的树状数据中更新后的各节点的融合状态以及远端表格文件的树状数据中更新后的各节点的融合状态,可以包括:
[0137]
s801、若当前遍历到的节点在本地表格文件的树状数据中以及在远端表格文件的树状数据中均为空或者仅一个为空,则确定当前遍历到的节点在本地表格文件的树状数据以及在远端表格文件的树状数据中的融合状态均为可融合。
[0138]
若当前遍历到的节点在本地表格文件的树状数据中以及在远端表格文件的树状数据中均为空或者仅一个为空时,也即,本地表格文件以及远端表格文件中只有一方对该节点进行了修改或者两方均未对其进行修改,那么,则可认为当前遍历到的节点在本地表格文件的树状数据以及在远端表格文件的树状数据中的融合状态均为可融合。
[0139]
这种情况也可以理解为当前遍历到的节点在本地表格文件以及远端表格文件中进行了不同的修改操作。
[0140]
s802、若当前遍历到的节点在本地表格文件的树状数据中以及在远端表格文件的
树状数据中均不为空,则判断当前遍历到的节点在本地表格文件的树状数据中以及在远端表格文件的树状数据中的比较结果是否相同。
[0141]
而若当前遍历到的节点在本地表格文件的树状数据中以及在远端表格文件的树状数据中均不为空,则可进一步地判断当前遍历到的节点在本地表格文件的树状数据中以及在远端表格文件的树状数据中的比较结果是否相同。
[0142]
s803、若比较结果相同,则判断当前遍历到的节点的比较结果是否均为修改且节点值不同。
[0143]
若当前遍历到的节点在本地表格文件的树状数据中以及在远端表格文件的树状数据中的比较结果相同,则可进一步地判断比较结果是否均为修改且节点值是否不同。
[0144]
s804、若比较结果均为修改且节点值不同,则确定当前遍历到的节点在本地表格文件的树状数据中以及在远端表格文件的树状数据中的融合状态均为冲突。
[0145]
当比较结果均为修改且节点值不同时,则可认为当前遍历到的节点在本地表格文件以及远端表格文件中进行了相同的修改,且修改的内容不同,也认为当前遍历到的节点在本地表格文件的树状数据中以及在远端表格文件的树状数据中的融合状态均为冲突。
[0146]
可选地,步骤s802中,判断当前遍历到的节点在本地表格文件的树状数据中以及在远端表格文件的树状数据中的比较结果是否相同之后,还包括:若比较结果不相同,则确定当前遍历到的节点在本地表格文件的树状数据中以及在远端表格文件的树状数据中的融合状态均为冲突。
[0147]
而若当前遍历到的节点在本地表格文件的树状数据中以及在远端表格文件的树状数据中的比较结果不相同,则认为当前遍历到的节点在节点在本地表格文件以及远端表格文件中进行了不同的修改,存在冲突,故确定当前遍历到的节点在本地表格文件的树状数据中以及在远端表格文件的树状数据中的融合状态均为冲突。
[0148]
图9为本技术实施例提供的文件处理方法的流程示意图八;可选地,步骤s104中,根据远端表格文件的树状数据中各节点的比较结果,对本地表格文件的树状数据中节点的融合状态进行更新,可以包括:
[0149]
s901、若远端表格文件的树状数据中目标节点的比较结果为新增,则在本地表格文件的树状数据中新增以目标节点为根节点的子树,并将目标节点以及子树的所有节点的融合状态更新为待新增;其中,目标节点指示融合状态为可融合的节点。
[0150]
在上述融合状态判定的基础上,本实施例中还可通过将远端表格文件的树状数据中融合状态为可融合的节点数据写入本地表格文件的树状数据中以实现对本地表格文件的树状数据中节点的融合状态的更新。可分为三种情况:
[0151]
第一种:远端表格文件的树状数据中节点的比较结果为新增,则在本地表格文件的树状数据中对应的位置新增以该节点为根节点的子树,并将该子树的所有节点的融合状态置为待新增。若该节点为工作表、行或列节点,则更新同类型节点的原始位置属性。其中,原始位置属性用于表征节点在表格文件中的原始位置。例如:行标识、列标识等。对于原始位置属性的更新是为了保证在新插入行、列或者删除行、列时,不会对表格中原来各行各列的标识产生影响。
[0152]
示例性的:比如远端表格文件为插入了行2,那么,在本地表格文件的行1和行2中间插入新的行2,并将原行2的标识改为旧行2,插入的改为新行2,以便于在后续的修改中,
对于行2的修改可以是可以准确的找到旧行2进行处理,而不是在新的行2中进行修改。
[0153]
s902、若远端表格文件的树状数据中目标节点的比较结果为修改,且目标节点为单元格节点,则将本地表格文件的树状数据中目标节点的值修改为与远端表格文件的树状数据中目标节点的值一致,并将本地表格文件的树状数据中目标节点的融合状态更新为待修改。
[0154]
第二种:远端表格文件的树状数据中节点的比较结果为修改:若该节点为单元格节点,则修改本地表格文件的树状数据中对应节点的值为与远端表格文件的树状数据中相同,并将该节点的融合状态置为待修改;若不是单元格节点,则不处理。
[0155]
s903、若远端表格文件的树状数据中目标节点的比较结果为删除,则将本地表格文件的树状数据中目标节点的子树下所有节点的融合状态更新为待删除。
[0156]
第三种:远端表格文件的树状数据中节点的比较结果态为删除,则将本地表格文件的树状数据中对应节点的子树下所有节点的融合状态置为待删除。若该节点为工作表、行或列节点,则更新同类型节点的原始位置属性。
[0157]
如下表4所示为远端表格文件的树状数据中节点的融合状态的示意图:
[0158]
表4
[0159][0160][0161]
通过上述处理,得到的本地表格文件更新后的树状数据中的节点的融合状态如下表5所示:
[0162]
表5
[0163]
节点比较结果融合状态
工作表2修改/表2-行5修改/表2-列6修改冲突表2-单元格(5,6)修改冲突工作表3修改/表3-行1修改/表3-列5修改/表3-单元格(1,5)修改冲突工作表5删除/表5-行1删除/表5-列6删除/表5-单元格(1,6)删除/表1-行1新增待新增表1-单元格(1,2)新增待新增表3-单元格(1,6)删除待删除表3-单元格(1,7)新增待新增
[0164]
图10为本技术实施例提供的文件处理方法的流程示意图九;可选地,步骤s104中,根据本地表格文件更新后的树状数据中的节点的融合状态以及节点类型,对本地表格文件进行更新,可以包括:
[0165]
s1001、根据本地表格文件更新后的树状数据中节点的融合状态以及节点类型对本地表格文件更新后的树状数据中的各节点进行排序。
[0166]
通过上述的处理过程已经得到了本地表格文件更新后的树状数据中节点的融合状态,而本实施例中通过树状数据生成excel文件的方式,可生成本地修改后的目标文件。
[0167]
与excel文件转换为树状数据的过程相反,对本地表格文件进行更新,生成本地修改后的目标文件的过程是将excel树状数据转换为新excel文件的过程,其流程包括以下步骤:
[0168]
1)读取本地表格文件,生成与本地表格文件数据完全相同的excel文件内存数据newdata。
[0169]
2)广度优先遍历本地表格文件更新后的树状数据中的所有节点,按照各节点的融合状态(待删除、待新增和待修改的优先级顺序)和节点类型(工作表、行、列和单元格的优先级顺序)对各节点进行排序,生成排序结果。
[0170]
s1002、根据排序结果,依次遍历各节点,并根据当前遍历到的节点的融合状态以及节点类型,对本地表格文件进行更新。
[0171]
3)根据排序结果,依次遍历各节点,根据节点类型和融合状态进行本地表格文件的更新。
[0172]
可选地,步骤s1002中,根据当前遍历到的节点的融合状态以及节点类型,对本地表格文件进行更新,包括:
[0173]
若当前遍历到的节点为工作表、行或列,且融合状态为删除,则在本地表格文件中删除节点对应位置的子单元。
[0174]
a)当前遍历到的节点的节点类型为工作表、行或列,融合状态为删除:根据该节点的原始位置属性,在newdata中删除对应的工作表、行或列,同时清空对应位置的格式、数据验证、筛选等。
[0175]
若当前遍历到的节点为工作表、行或列,且融合状态为新增,则在本地表格文件中节点对应位置上新增空的工作表、行或列;
[0176]
b)当前遍历到的节点的节点类型为工作表、行或列,融合状态为新增:根据该节点的原始位置属性,在newdata中新增空的工作表、行或列,同时复制remotefile中对应位置的格式、数据验证、筛选等写入newdata。
[0177]
若当前遍历到的节点为单元格,且融合状态为新增或修改,则根据节点对应的行节点和列节点确定节点在本地表格文件中的位置,并将远端表格文件中单元格的值写入位置中。
[0178]
c)当前遍历到的节点的节点类型为单元格,融合状态为新增或修改:根据该节点对应的两个父节点(行节点和列节点)获取对应行和列的原始位置,读取远端表格文件中对应单元格的值、格式、批注等写入该位置。
[0179]
可选地,在所有节点遍历完成后,则可由newdata按照excel文件的子单元层级关系,生成本地修改后的目标文件。
[0180]
图11为本技术实施例提供的文件处理方法的流程示意图十;可选地,步骤s103中,确定本地表格文件的树状数据中各节点的融合状态以及远端表格文件的树状数据中各节点的融合状态之后,还包括:
[0181]
s1101、根据节点的节点类型、融合状态、比较结果,以及预先配置的融合状态的展示样式、比较结果的展示样式,将本地表格文件的树状数据以及远端表格文件的树状数据分别转换为目标形式进行展示,目标形式包括:二维表格形式。
[0182]
在一些实施例中,还实现了基于windows平台的图形界面来实现对比较结果和融合状态的结果展示。
[0183]
windows图形界面将excel文件的比较和融合结果转换为多组二维表格的对比展示,用户可通过下拉选项进行切换。
[0184]
可选地,可以预先设置融合状态的展示样式以及比较结果的展示样式,这里的展示样式可以包括:展示颜色及展示符号,针对不同的比较结果以及不同的融合结果,可以采用不同的颜色以及符号进行表示,从而可将比较结果和融合结果以二维表格的形式,按照设定的样式进行展示,可以便于用户清晰的查看比较结果和融合状态。
[0185]
例如:新增-对应黄色;删除-对应橙色;修改-对应紫色;冲突-对应粉色;新增用加号表示;删除用减号表示;冲突用叹号表示等。当前可以自适应的调整展示样式,能够有效区分不同的比较结果和融合状态即可。
[0186]
s1102、响应于针对融合状态为冲突的表格输入的冲突处理操作,更改融合状态为冲突的表格的表格信息。
[0187]
可选地,在结果展示的基础上,用户可通过按键和快捷键进行工作表选择、跳转查看和搜索,同时也可对文件结构信息和结果展示样式进行设置和保存。
[0188]
对于文件的修改操作由右键选项完成,主要包括使用远端表格文件的数据、使用本地表格文件的数据和追加到文件结尾(仅可在行冲突的情况中使用)三类:
[0189]
(1)使用远端表格文件的数据:用远端表格文件的树状数据中的节点数据覆盖本地表格文件的树状数据中节点数据,并将融合状态修改为待修改或待删除。
[0190]
(2)使用本地表格文件的数据:将本地表格文件的树状数据中对应节点的融合状态修改为无操作。
[0191]
(3)追加到文件结尾:在本地表格文件的树状数据中结尾位置新增对应行的子树,并将融合状态修改为待新增。在用户点击保存或冲突解决后,这些修改操作将依次写入的本地表格文件的树状数据中。
[0192]
在一些实施例中,在处理冲突时,可以基于用户在所展示的融合状态结果中针对目标表格输入的冲突处理操作,这里的冲突处理操作可以是单击右键,在出现的下拉选项中选择采用本地表格文件中的数据还是采用远端表格文件中的数据作为目标表格的目标值。
[0193]
当然,对于非冲突的处理与上述类似,同样可以通过在待处理的表格位置触发展示下拉选项,从下拉选项中选择所需的数据进行非冲突的处理。
[0194]
例如:本地表格文件原本删除了一行,远端表格文件无修改,本地表格文件与远端表格文件进行融合后也不存在冲突,但用户经过核对后认为对本地表格文件中该行所做的删除操作属于误删除,需要恢复该行,则可以在所要恢复的位置通过右键触发展示下拉菜单,选择使用远端表格文件数据,以将被误删的行的内容新增到对应的位置。
[0195]
另外,为了便于本方案的自动运行和跨平台支持,还实现了跨平台的用户通知流程来完成对自动融合结果的提醒。在非windows平台下运行时,本方案会跳过上述结果展示的步骤,直接根据冲突判定和自动融合的结果进行判断。若本地表格文件和远端表格文件的冲突判定结果中均不存在融合状态为冲突的节点,则直接根据自动融合的结果生成新的excel文件并自动提交,完成该融合过程。反之,则中止融合过程、回滚文件、将所有融合状态为冲突的节点信息导出为文本,并通过svn/git中该文件的修改日志、追溯至对应的用户,将冲突信息通过公司内部软件等方式发送给用户、提醒用户手动处理。
[0196]
综上所述,本实施例提供的文件处理方法,基于表格类型的文件的预设结构信息实现对待处理的表格文件的转换,生成待处理的表格文件的树状数据,从而基于待处理的表格文件的树状数据进行树比较,确保了不同表格文件之间各子单元的对应关系的准确性,从而保证了不同待处理的表格文件的比较结果的准确性,而基于比较结果,可进行本地表格文件和远端表格文件的融合和冲突判定,以确定出本地表格文件和远端表格文件之间的融合内容,从而实现本地表格文件和远端表格文件之间的自动融合处理,提高了文件融合的准确性。
[0197]
另外,通过提供的windows平台图形界面,将比较结果和融合状态按照预设的展示样式进行展示,使得用户可以便捷和清晰地查看比较和融合结果、进行冲突处理,减少了人工处理excel文件冲突的工作量、提高了excel文件冲突处理的准确性和分支开发过程中excel文件的处理效率。
[0198]
下述对用以执行本技术所提供的文件处理方法的装置、设备及存储介质等进行说明,其具体的实现过程以及技术效果参见上述,下述不再赘述。
[0199]
图12为本技术实施例提供的一种文件处理装置的示意图,该文件处理装置实现的功能对应上述方法执行的步骤。该装置可以理解为上述的计算机设备,如图12所示,该装置
可包括:生成模块120、比较模块121、确定模块122、更新模块123;
[0200]
生成模块120,用于根据表格类型的文件的预设结构信息,将各待处理的表格文件进行转换,生成各待处理的表格文件的树状数据,预设结构信息包括:子单元的层级关系;不同待处理的表格文件中对应的子单元之间具有相同的标识信息;待处理的表格文件包括:原始表格文件、本地表格文件和远端表格文件;
[0201]
比较模块121,用于对各待处理的表格文件的树状数据进行比较,得到各待处理的表格文件的树状数据中各节点的比较结果,比较结果表征不同的待处理的表格文件之间的相对修改内容;
[0202]
确定模块122,用于根据本地表格文件的树状数据中各节点的比较结果以及远端表格文件对应的树状数据中各节点的比较结果,确定本地表格文件的树状数据中各节点的融合状态以及远端表格文件的树状数据中各节点的融合状态;
[0203]
更新模块123,用于根据远端表格文件的树状数据中各节点的比较结果,对本地表格文件的树状数据中节点的融合状态进行更新,并根据本地表格文件更新后的树状数据中的节点的融合状态以及节点类型,对本地表格文件进行更新。
[0204]
可选地,子单元包括:文件表、行、列、单元格;生成模块120,具体用于根据表格类型的文件中各子单元的层级关系以及预先配置的子单元筛选条件及标识生成方式,对各待处理的表格文件中的待处理的子单元进行筛选,并为筛选出的各子单元分配标识信息;
[0205]
根据筛选出的各子单元的层级关系,自顶向下构建待处理的表格文件的树状数据,树状数据包含的层数与子单元的类型数量一致,各层包含的节点的类型根据各子单元的层级关系确定。
[0206]
可选地,比较模块121,具体用于将本地表格文件的树状数据与原始表格文件的树状数据中对应节点进行比较,生成本地表格文件的树状数据中各节点的比较结果,比较结果包括:新增、删除、修改及无操作;
[0207]
将远端表格文件的树状数据与原始表格文件的树状数据中对应节点进行比较,生成远端表格文件的树状数据中各节点的比较结果。
[0208]
可选地,比较模块121,具体用于若当前待比较的对应节点在本地表格文件的树状数据中为空,且在原始表格文件的树状数据中不为空,则确定对应节点在原始表格文件的树状数据中的比较结果为删除;
[0209]
若当前待比较的对应节点在本地表格文件的树状数据中不为空,且在原始表格文件的树状数据中为空,则确定对应节点在本地表格文件的树状数据中的比较结果为新增;
[0210]
若当前待比较的对应节点在本地表格文件的树状数据中以及在原始表格文件的树状数据中均不为空,则递归查找对应节点的子节点中的单元格节点,根据单元格节点的值,确定对应节点分别在本地表格文件的树状数据中以及在原始表格文件的树状数据中的比较结果;
[0211]
根据原始表格文件的树状数据中各节点的比较结果以及本地表格文件的树状数据中各节点的比较结果,确定本地表格文件的树状数据中各节点的比较结果。
[0212]
可选地,比较模块121,具体用于若单元格节点的值在本地表格文件的树状数据中以及在原始表格文件的树状数据中不一致,则确定对应节点分别在本地表格文件的树状数据中以及在原始表格文件的树状数据中的比较结果为修改。
[0213]
可选地,比较模块121,具体用于获取本地表格文件的树状数据中节点的比较结果为新增和修改的候选节点以及原始表格文件的树状数据中节点的比较结果为删除和修改的候选节点;
[0214]
根据各候选节点的比较结果,生成本地表格文件的树状数据中各节点的比较结果。
[0215]
可选地,确定模块122,具体用于对本地表格文件的树状数据与远端表格文件的树状数据中对应节点的比较结果为新增的节点,在树状数据中补全对应节点的子节点以及子节点的比较结果,并将对应节点的比较结果由新增更新为修改,分别得到本地表格文件的树状数据中更新后的各节点的比较结果以及远端表格文件的树状数据中更新后的各节点的比较结果;
[0216]
对本地表格文件的树状数据中更新后的各节点与远端表格文件的树状数据中更新后的各节点求并集,得到节点集合;
[0217]
依次遍历节点集合中的各节点,并根据当前遍历到的节点分别在本地表格文件的树状数据中的比较结果以及在远端表格文件的树状数据中的比较结果,生成本地表格文件的树状数据中更新后的各节点的融合状态以及远端表格文件的树状数据中更新后的各节点的融合状态,融合状态包括:无操作、可融合、冲突、待新增、待删除、待修改。
[0218]
可选地,确定模块122,具体用于若当前遍历到的节点在本地表格文件的树状数据中以及在远端表格文件的树状数据中均为空或者仅一个为空,则确定当前遍历到的节点在本地表格文件的树状数据以及在远端表格文件的树状数据中的融合状态均为可融合;
[0219]
若当前遍历到的节点在本地表格文件的树状数据中以及在远端表格文件的树状数据中均不为空,则判断当前遍历到的节点在本地表格文件的树状数据中以及在远端表格文件的树状数据中的比较结果是否相同;
[0220]
若比较结果相同,则判断当前遍历到的节点的比较结果是否均为修改且节点值不同;
[0221]
若比较结果均为修改且节点值不同,则确定当前遍历到的节点在本地表格文件的树状数据中以及在远端表格文件的树状数据中的融合状态均为冲突。
[0222]
可选地,确定模块122,具体用于若比较结果不相同,则确定当前遍历到的节点在本地表格文件的树状数据中以及在远端表格文件的树状数据中的融合状态均为冲突。
[0223]
可选地,更新模块123,具体用于若远端表格文件的树状数据中目标节点的比较结果为新增,则在本地表格文件的树状数据中新增以目标节点为根节点的子树,并将目标节点以及子树的所有节点的融合状态更新为待新增;其中,目标节点指示融合状态为可融合的节点;
[0224]
若远端表格文件的树状数据中目标节点的比较结果为修改,且目标节点为单元格节点,则将本地表格文件的树状数据中目标节点的值修改为与远端表格文件的树状数据中目标节点的值一致,并将本地表格文件的树状数据中目标节点的融合状态更新为待修改;
[0225]
若远端表格文件的树状数据中目标节点的比较结果为删除,则将本地表格文件的树状数据中目标节点的子树下所有节点的融合状态更新为待删除。
[0226]
可选地,更新模块123,具体用于根据本地表格文件更新后的树状数据中节点的融合状态以及节点类型对本地表格文件更新后的树状数据中的各节点进行排序;
[0227]
根据排序结果,依次遍历各节点,并根据当前遍历到的节点的融合状态以及节点类型,对本地表格文件进行更新。
[0228]
可选地,更新模块123,具体用于若当前遍历到的节点为工作表、行或列,且融合状态为删除,则在本地表格文件中删除节点对应位置的子单元;
[0229]
若当前遍历到的节点为工作表、行或列,且融合状态为新增,则在本地表格文件中节点对应位置上新增空的工作表、行或列;
[0230]
若当前遍历到的节点为单元格,且融合状态为新增或修改,则根据节点对应的行节点和列节点确定节点在本地表格文件中的位置,并将远端表格文件中单元格的值写入位置中。
[0231]
可选地,装置还包括:展示模块、冲突处理模块;
[0232]
展示模块,用于根据节点的节点类型、融合状态、比较结果,以及预先配置的融合状态的展示样式、比较结果的展示样式,将本地表格文件的树状数据以及远端表格文件的树状数据分别转换为目标形式进行展示,目标形式包括:二维表格形式;
[0233]
冲突处理模块,用于响应于针对融合状态为冲突的表格输入的冲突处理操作,更改融合状态为冲突的表格的表格信息。
[0234]
上述装置用于执行前述实施例提供的方法,其实现原理和技术效果类似,在此不再赘述。
[0235]
以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(application specific integrated circuit,简称asic),或,一个或多个微处理器(digital singnal processor,简称dsp),或,一个或者多个现场可编程门阵列(field programmable gate array,简称fpga)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(central processing unit,简称cpu)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称soc)的形式实现。
[0236]
上述模块可以经由有线连接或无线连接彼此连接或通信。有线连接可以包括金属线缆、光缆、混合线缆等,或其任意组合。无线连接可以包括通过lan、wan、蓝牙、zigbee、或nfc等形式的连接,或其任意组合。两个或更多个模块可以组合为单个模块,并且任何一个模块可以分成两个或更多个单元。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考方法实施例中的对应过程,本技术中不再赘述。
[0237]
图13为本技术实施例提供的一种电子设备的结构示意图,包括:处理器801、存储介质802和总线803,存储介质802存储有处理器801可执行的机器可读指令,当电子设备运行如实施例中的一种文件处理方法时,处理器801与存储介质802之间通过总线803通信,处理器801执行机器可读指令,以执行以下步骤:
[0238]
在一个可行的实施方案中,处理器801在执行文件处理方法时,具体用于:根据表格类型的文件的预设结构信息,将各待处理的表格文件进行转换,生成各待处理的表格文件的树状数据,预设结构信息包括:子单元的层级关系;不同待处理的表格文件中对应的子单元之间具有相同的标识信息;待处理的表格文件包括:原始表格文件、本地表格文件和远端表格文件;对各待处理的表格文件的树状数据进行比较,得到各待处理的表格文件的树
状数据中各节点的比较结果,比较结果表征不同的待处理的表格文件之间的相对修改内容;根据本地表格文件的树状数据中各节点的比较结果以及远端表格文件对应的树状数据中各节点的比较结果,确定本地表格文件的树状数据中各节点的融合状态以及远端表格文件的树状数据中各节点的融合状态;根据远端表格文件的树状数据中各节点的比较结果,对本地表格文件的树状数据中节点的融合状态进行更新,并根据本地表格文件更新后的树状数据中的节点的融合状态以及节点类型,对本地表格文件进行更新。
[0239]
在一个可行的实施方案中,处理器801在执行文件处理方法时,具体用于:根据表格类型的文件中各子单元的层级关系以及预先配置的子单元筛选条件及标识生成方式,对各待处理的表格文件中的待处理的子单元进行筛选,并为筛选出的各子单元分配标识信息;根据筛选出的各子单元的层级关系,自顶向下构建待处理的表格文件的树状数据,树状数据包含的层数与子单元的类型数量一致,各层包含的节点的类型根据各子单元的层级关系确定。
[0240]
在一个可行的实施方案中,处理器801在执行文件处理方法时,具体用于:将本地表格文件的树状数据与原始表格文件的树状数据中对应节点进行比较,生成本地表格文件的树状数据中各节点的比较结果,比较结果包括:新增、删除、修改及无操作;将远端表格文件的树状数据与原始表格文件的树状数据中对应节点进行比较,生成远端表格文件的树状数据中各节点的比较结果。
[0241]
在一个可行的实施方案中,处理器801在执行文件处理方法时,具体用于:若当前待比较的对应节点在本地表格文件的树状数据中为空,且在原始表格文件的树状数据中不为空,则确定对应节点在原始表格文件的树状数据中的比较结果为删除;若当前待比较的对应节点在本地表格文件的树状数据中不为空,且在原始表格文件的树状数据中为空,则确定对应节点在本地表格文件的树状数据中的比较结果为新增;若当前待比较的对应节点在本地表格文件的树状数据中以及在原始表格文件的树状数据中均不为空,则递归查找对应节点的子节点中的单元格节点,根据单元格节点的值,确定对应节点分别在本地表格文件的树状数据中以及在原始表格文件的树状数据中的比较结果;根据原始表格文件的树状数据中各节点的比较结果以及本地表格文件的树状数据中各节点的比较结果,确定本地表格文件的树状数据中各节点的比较结果。
[0242]
在一个可行的实施方案中,处理器801在执行文件处理方法时,具体用于:若单元格节点的值在本地表格文件的树状数据中以及在原始表格文件的树状数据中不一致,则确定对应节点分别在本地表格文件的树状数据中以及在原始表格文件的树状数据中的比较结果为修改。
[0243]
在一个可行的实施方案中,处理器801在执行文件处理方法时,具体用于:获取本地表格文件的树状数据中节点的比较结果为新增和修改的候选节点以及原始表格文件的树状数据中节点的比较结果为删除和修改的候选节点;根据各候选节点的比较结果,生成本地表格文件的树状数据中各节点的比较结果。
[0244]
在一个可行的实施方案中,处理器801在执行文件处理方法时,具体用于:对本地表格文件的树状数据与远端表格文件的树状数据中对应节点的比较结果为新增的节点,在树状数据中补全对应节点的子节点以及子节点的比较结果,并将对应节点的比较结果由新增更新为修改,分别得到本地表格文件的树状数据中更新后的各节点的比较结果以及远端
表格文件的树状数据中更新后的各节点的比较结果;对本地表格文件的树状数据中更新后的各节点与远端表格文件的树状数据中更新后的各节点求并集,得到节点集合;依次遍历节点集合中的各节点,并根据当前遍历到的节点分别在本地表格文件的树状数据中的比较结果以及在远端表格文件的树状数据中的比较结果,生成本地表格文件的树状数据中更新后的各节点的融合状态以及远端表格文件的树状数据中更新后的各节点的融合状态,融合状态包括:无操作、可融合、冲突、待新增、待删除、待修改。
[0245]
在一个可行的实施方案中,处理器801在执行文件处理方法时,具体用于:若当前遍历到的节点在本地表格文件的树状数据中以及在远端表格文件的树状数据中均为空或者仅一个为空,则确定当前遍历到的节点在本地表格文件的树状数据以及在远端表格文件的树状数据中的融合状态均为可融合;若当前遍历到的节点在本地表格文件的树状数据中以及在远端表格文件的树状数据中均不为空,则判断当前遍历到的节点在本地表格文件的树状数据中以及在远端表格文件的树状数据中的比较结果是否相同;若比较结果相同,则判断当前遍历到的节点的比较结果是否均为修改且节点值不同;若比较结果均为修改且节点值不同,则确定当前遍历到的节点在本地表格文件的树状数据中以及在远端表格文件的树状数据中的融合状态均为冲突。
[0246]
在一个可行的实施方案中,处理器801在执行文件处理方法时,具体用于:若比较结果不相同,则确定当前遍历到的节点在本地表格文件的树状数据中以及在远端表格文件的树状数据中的融合状态均为冲突。
[0247]
在一个可行的实施方案中,处理器801在执行文件处理方法时,具体用于:若远端表格文件的树状数据中目标节点的比较结果为新增,则在本地表格文件的树状数据中新增以目标节点为根节点的子树,并将目标节点以及子树的所有节点的融合状态更新为待新增;其中,目标节点指示融合状态为可融合的节点;若远端表格文件的树状数据中目标节点的比较结果为修改,且目标节点为单元格节点,则将本地表格文件的树状数据中目标节点的值修改为与远端表格文件的树状数据中目标节点的值一致,并将本地表格文件的树状数据中目标节点的融合状态更新为待修改;若远端表格文件的树状数据中目标节点的比较结果为删除,则将本地表格文件的树状数据中目标节点的子树下所有节点的融合状态更新为待删除。
[0248]
在一个可行的实施方案中,处理器801在执行文件处理方法时,具体用于:根据本地表格文件更新后的树状数据中节点的融合状态以及节点类型对本地表格文件更新后的树状数据中的各节点进行排序;根据排序结果,依次遍历各节点,并根据当前遍历到的节点的融合状态以及节点类型,对本地表格文件进行更新。
[0249]
在一个可行的实施方案中,处理器801在执行文件处理方法时,具体用于:若当前遍历到的节点为工作表、行或列,且融合状态为删除,则在本地表格文件中删除节点对应位置的子单元;若当前遍历到的节点为工作表、行或列,且融合状态为新增,则在本地表格文件中节点对应位置上新增空的工作表、行或列;当前遍历到的节点为单元格,且融合状态为新增或修改,则根据节点对应的行节点和列节点确定节点在本地表格文件中的位置,并将远端表格文件中单元格的值写入位置中。
[0250]
在一个可行的实施方案中,处理器801在执行文件处理方法时,具体用于:根据节点的节点类型、融合状态、比较结果,以及预先配置的融合状态的展示样式、比较结果的展
示样式,将本地表格文件的树状数据以及远端表格文件的树状数据分别转换为目标形式进行展示,目标形式包括:二维表格形式;响应于针对融合状态为冲突的表格输入的冲突处理操作,更改融合状态为冲突的表格的表格信息。
[0251]
其中,存储介质802存储有程序代码,当程序代码被处理器801执行时,使得处理器801执行本说明书上述“示例性方法”部分中描述的根据本技术各种示例性实施方式的文件处理方法中的各种步骤。
[0252]
处理器801可以是通用处理器,例如中央处理器(cpu)、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本技术实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
[0253]
存储介质802作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(random access memory,ram)、静态随机访问存储器(static random access memory,sram)、可编程只读存储器(programmable read only memory,prom)、只读存储器(read only memory,rom)、带电可擦除可编程只读存储器(electrically erasable programmable read-only memory,eeprom)、磁性存储器、磁盘、光盘等等。存储器是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本技术实施例中的存储介质802还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
[0254]
可选地,本技术实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行,处理器执行以下步骤:
[0255]
在一个可行的实施方案中,处理器在执行文件处理方法时,具体用于:根据表格类型的文件的预设结构信息,将各待处理的表格文件进行转换,生成各待处理的表格文件的树状数据,预设结构信息包括:子单元的层级关系;不同待处理的表格文件中对应的子单元之间具有相同的标识信息;待处理的表格文件包括:原始表格文件、本地表格文件和远端表格文件;对各待处理的表格文件的树状数据进行比较,得到各待处理的表格文件的树状数据中各节点的比较结果,比较结果表征不同的待处理的表格文件之间的相对修改内容;根据本地表格文件的树状数据中各节点的比较结果以及远端表格文件对应的树状数据中各节点的比较结果,确定本地表格文件的树状数据中各节点的融合状态以及远端表格文件的树状数据中各节点的融合状态;根据远端表格文件的树状数据中各节点的比较结果,对本地表格文件的树状数据中节点的融合状态进行更新,并根据本地表格文件更新后的树状数据中的节点的融合状态以及节点类型,对本地表格文件进行更新。
[0256]
在一个可行的实施方案中,处理器在执行文件处理方法时,具体用于:根据表格类型的文件中各子单元的层级关系以及预先配置的子单元筛选条件及标识生成方式,对各待处理的表格文件中的待处理的子单元进行筛选,并为筛选出的各子单元分配标识信息;根
据筛选出的各子单元的层级关系,自顶向下构建待处理的表格文件的树状数据,树状数据包含的层数与子单元的类型数量一致,各层包含的节点的类型根据各子单元的层级关系确定。
[0257]
在一个可行的实施方案中,处理器在执行文件处理方法时,具体用于:将本地表格文件的树状数据与原始表格文件的树状数据中对应节点进行比较,生成本地表格文件的树状数据中各节点的比较结果,比较结果包括:新增、删除、修改及无操作;将远端表格文件的树状数据与原始表格文件的树状数据中对应节点进行比较,生成远端表格文件的树状数据中各节点的比较结果。
[0258]
在一个可行的实施方案中,处理器在执行文件处理方法时,具体用于:若当前待比较的对应节点在本地表格文件的树状数据中为空,且在原始表格文件的树状数据中不为空,则确定对应节点在原始表格文件的树状数据中的比较结果为删除;若当前待比较的对应节点在本地表格文件的树状数据中不为空,且在原始表格文件的树状数据中为空,则确定对应节点在本地表格文件的树状数据中的比较结果为新增;若当前待比较的对应节点在本地表格文件的树状数据中以及在原始表格文件的树状数据中均不为空,则递归查找对应节点的子节点中的单元格节点,根据单元格节点的值,确定对应节点分别在本地表格文件的树状数据中以及在原始表格文件的树状数据中的比较结果;根据原始表格文件的树状数据中各节点的比较结果以及本地表格文件的树状数据中各节点的比较结果,确定本地表格文件的树状数据中各节点的比较结果。
[0259]
在一个可行的实施方案中,处理器在执行文件处理方法时,具体用于:若单元格节点的值在本地表格文件的树状数据中以及在原始表格文件的树状数据中不一致,则确定对应节点分别在本地表格文件的树状数据中以及在原始表格文件的树状数据中的比较结果为修改。
[0260]
在一个可行的实施方案中,处理器在执行文件处理方法时,具体用于:获取本地表格文件的树状数据中节点的比较结果为新增和修改的候选节点以及原始表格文件的树状数据中节点的比较结果为删除和修改的候选节点;根据各候选节点的比较结果,生成本地表格文件的树状数据中各节点的比较结果。
[0261]
在一个可行的实施方案中,处理器在执行文件处理方法时,具体用于:对本地表格文件的树状数据与远端表格文件的树状数据中对应节点的比较结果为新增的节点,在树状数据中补全对应节点的子节点以及子节点的比较结果,并将对应节点的比较结果由新增更新为修改,分别得到本地表格文件的树状数据中更新后的各节点的比较结果以及远端表格文件的树状数据中更新后的各节点的比较结果;对本地表格文件的树状数据中更新后的各节点与远端表格文件的树状数据中更新后的各节点求并集,得到节点集合;依次遍历节点集合中的各节点,并根据当前遍历到的节点分别在本地表格文件的树状数据中的比较结果以及在远端表格文件的树状数据中的比较结果,生成本地表格文件的树状数据中更新后的各节点的融合状态以及远端表格文件的树状数据中更新后的各节点的融合状态,融合状态包括:无操作、可融合、冲突、待新增、待删除、待修改。
[0262]
在一个可行的实施方案中,处理器在执行文件处理方法时,具体用于:若当前遍历到的节点在本地表格文件的树状数据中以及在远端表格文件的树状数据中均为空或者仅一个为空,则确定当前遍历到的节点在本地表格文件的树状数据以及在远端表格文件的树
状数据中的融合状态均为可融合;若当前遍历到的节点在本地表格文件的树状数据中以及在远端表格文件的树状数据中均不为空,则判断当前遍历到的节点在本地表格文件的树状数据中以及在远端表格文件的树状数据中的比较结果是否相同;若比较结果相同,则判断当前遍历到的节点的比较结果是否均为修改且节点值不同;若比较结果均为修改且节点值不同,则确定当前遍历到的节点在本地表格文件的树状数据中以及在远端表格文件的树状数据中的融合状态均为冲突。
[0263]
在一个可行的实施方案中,处理器在执行文件处理方法时,具体用于:若比较结果不相同,则确定当前遍历到的节点在本地表格文件的树状数据中以及在远端表格文件的树状数据中的融合状态均为冲突。
[0264]
在一个可行的实施方案中,处理器在执行文件处理方法时,具体用于:若远端表格文件的树状数据中目标节点的比较结果为新增,则在本地表格文件的树状数据中新增以目标节点为根节点的子树,并将目标节点以及子树的所有节点的融合状态更新为待新增;其中,目标节点指示融合状态为可融合的节点;若远端表格文件的树状数据中目标节点的比较结果为修改,且目标节点为单元格节点,则将本地表格文件的树状数据中目标节点的值修改为与远端表格文件的树状数据中目标节点的值一致,并将本地表格文件的树状数据中目标节点的融合状态更新为待修改;若远端表格文件的树状数据中目标节点的比较结果为删除,则将本地表格文件的树状数据中目标节点的子树下所有节点的融合状态更新为待删除。
[0265]
在一个可行的实施方案中,处理器在执行文件处理方法时,具体用于:根据本地表格文件更新后的树状数据中节点的融合状态以及节点类型对本地表格文件更新后的树状数据中的各节点进行排序;根据排序结果,依次遍历各节点,并根据当前遍历到的节点的融合状态以及节点类型,对本地表格文件进行更新。
[0266]
在一个可行的实施方案中,处理器在执行文件处理方法时,具体用于:若当前遍历到的节点为工作表、行或列,且融合状态为删除,则在本地表格文件中删除节点对应位置的子单元;若当前遍历到的节点为工作表、行或列,且融合状态为新增,则在本地表格文件中节点对应位置上新增空的工作表、行或列;当前遍历到的节点为单元格,且融合状态为新增或修改,则根据节点对应的行节点和列节点确定节点在本地表格文件中的位置,并将远端表格文件中单元格的值写入位置中。
[0267]
在一个可行的实施方案中,处理器在执行文件处理方法时,具体用于:根据节点的节点类型、融合状态、比较结果,以及预先配置的融合状态的展示样式、比较结果的展示样式,将本地表格文件的树状数据以及远端表格文件的树状数据分别转换为目标形式进行展示,目标形式包括:二维表格形式;响应于针对融合状态为冲突的表格输入的冲突处理操作,更改融合状态为冲突的表格的表格信息。
[0268]
在本技术实施例中,该计算机程序被处理器运行时还可以执行其它机器可读指令,以执行如实施例中其它所述的方法,关于具体执行的方法步骤和原理参见实施例的说明,在此不再详细赘述。
[0269]
在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结
合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0270]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0271]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0272]
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本技术各个实施例所述方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储介质(英文:read-only memory,简称:rom)、随机存取存储介质(英文:random access memory,简称:ram)、磁碟或者光盘等各种可以存储程序代码的介质。
技术特征:
1.一种文件处理方法,其特征在于,包括:根据表格类型的文件的预设结构信息,将各待处理的表格文件进行转换,生成各待处理的表格文件的树状数据,所述预设结构信息包括:子单元的层级关系;不同待处理的表格文件中对应的子单元之间具有相同的标识信息;所述待处理的表格文件包括:原始表格文件、本地表格文件和远端表格文件;对各待处理的表格文件的树状数据进行比较,得到各待处理的表格文件的树状数据中各节点的比较结果,所述比较结果表征不同的待处理的表格文件之间的相对修改内容;根据所述本地表格文件的树状数据中各节点的比较结果以及所述远端表格文件对应的树状数据中各节点的比较结果,确定所述本地表格文件的树状数据中各节点的融合状态以及所述远端表格文件的树状数据中各节点的融合状态;根据所述远端表格文件的树状数据中各节点的比较结果,对所述本地表格文件的树状数据中节点的融合状态进行更新,并根据所述本地表格文件更新后的树状数据中的节点的融合状态以及节点类型,对所述本地表格文件进行更新。2.根据权利要求1所述的方法,其特征在于,所述子单元包括:文件表、行、列、单元格;所述根据表格类型的文件的预设结构信息,将各待处理的表格文件进行转换,生成各待处理的表格文件的树状数据,包括:根据表格类型的文件中各子单元的层级关系以及预先配置的子单元筛选条件及标识生成方式,对各待处理的表格文件中的待处理的子单元进行筛选,并为筛选出的各子单元分配标识信息;根据筛选出的各子单元的层级关系,自顶向下构建所述待处理的表格文件的树状数据,所述树状数据包含的层数与所述子单元的类型数量一致,各层包含的节点的类型根据各子单元的层级关系确定。3.根据权利要求1所述的方法,其特征在于,对各待处理的表格文件的树状数据进行比较,得到各待处理的表格文件的树状数据中各节点的比较结果,包括:将所述本地表格文件的树状数据与所述原始表格文件的树状数据中对应节点进行比较,生成所述本地表格文件的树状数据中各节点的比较结果,所述比较结果包括:新增、删除、修改及无操作;将所述远端表格文件的树状数据与所述原始表格文件的树状数据中对应节点进行比较,生成所述远端表格文件的树状数据中各节点的比较结果。4.根据权利要求3所述的方法,其特征在于,所述将所述本地表格文件的树状数据与所述原始表格文件的树状数据中对应节点进行比较,生成所述本地表格文件的树状数据中各节点的比较结果,包括:若当前待比较的对应节点在所述本地表格文件的树状数据中为空,且在所述原始表格文件的树状数据中不为空,则确定所述对应节点在所述原始表格文件的树状数据中的比较结果为删除;若当前待比较的对应节点在所述本地表格文件的树状数据中不为空,且在所述原始表格文件的树状数据中为空,则确定所述对应节点在所述本地表格文件的树状数据中的比较结果为新增;若当前待比较的对应节点在所述本地表格文件的树状数据中以及在所述原始表格文
件的树状数据中均不为空,则递归查找所述对应节点的子节点中的单元格节点,根据所述单元格节点的值,确定所述对应节点分别在所述本地表格文件的树状数据中以及在所述原始表格文件的树状数据中的比较结果;根据所述原始表格文件的树状数据中各节点的比较结果以及所述本地表格文件的树状数据中各节点的比较结果,确定本地表格文件的树状数据中各节点的比较结果。5.根据权利要求4所述的方法,其特征在于,所述根据所述单元格节点的值,确定所述对应节点分别在所述本地表格文件的树状数据中以及在所述原始表格文件的树状数据中的比较结果,包括:若所述单元格节点的值在所述本地表格文件的树状数据中以及在所述原始表格文件的树状数据中不一致,则确定所述对应节点分别在所述本地表格文件的树状数据中以及在所述原始表格文件的树状数据中的比较结果为修改。6.根据权利要求4所述的方法,其特征在于,所述根据所述原始表格文件的树状数据中各节点的比较结果以及所述本地表格文件的树状数据中各节点的比较结果,确定本地表格文件的树状数据中各节点的比较结果,包括:获取所述本地表格文件的树状数据中节点的比较结果为新增和修改的候选节点以及所述原始表格文件的树状数据中节点的比较结果为删除和修改的候选节点;根据各候选节点的比较结果,生成所述本地表格文件的树状数据中各节点的比较结果。7.根据权利要求1所述的方法,其特征在于,根据所述本地表格文件的树状数据中各节点的比较结果以及所述远端表格文件对应的树状数据中各节点的比较结果,确定所述本地表格文件的树状数据中各节点的融合状态以及所述远端表格文件的树状数据中各节点的融合状态,包括:对所述本地表格文件的树状数据与所述远端表格文件的树状数据中对应节点的比较结果为新增的节点,在树状数据中补全所述对应节点的子节点以及子节点的比较结果,并将所述对应节点的比较结果由所述新增更新为修改,分别得到本地表格文件的树状数据中更新后的各节点的比较结果以及所述远端表格文件的树状数据中更新后的各节点的比较结果;对所述本地表格文件的树状数据中更新后的各节点与所述远端表格文件的树状数据中更新后的各节点求并集,得到节点集合;依次遍历节点集合中的各节点,并根据当前遍历到的节点分别在所述本地表格文件的树状数据中的比较结果以及在所述远端表格文件的树状数据中的比较结果,生成所述本地表格文件的树状数据中更新后的各节点的融合状态以及所述远端表格文件的树状数据中更新后的各节点的融合状态,所述融合状态包括:无操作、可融合、冲突、待新增、待删除、待修改。8.根据权利要求7所述的方法,其特征在于,所述根据当前遍历到的节点分别在所述本地表格文件的树状数据中的比较结果以及在所述远端表格文件的树状数据中的比较结果,生成所述本地表格文件的树状数据中更新后的各节点的融合状态以及所述远端表格文件的树状数据中更新后的各节点的融合状态,包括:若当前遍历到的节点在所述本地表格文件的树状数据中以及在所述远端表格文件的
树状数据中均为空或者仅一个为空,则确定所述当前遍历到的节点在所述本地表格文件的树状数据以及在所述远端表格文件的树状数据中的融合状态均为可融合;若当前遍历到的节点在所述本地表格文件的树状数据中以及在所述远端表格文件的树状数据中均不为空,则判断所述当前遍历到的节点在所述本地表格文件的树状数据中以及在所述远端表格文件的树状数据中的比较结果是否相同;若比较结果相同,则判断所述当前遍历到的节点的比较结果是否均为修改且节点值不同;若比较结果均为修改且节点值不同,则确定所述当前遍历到的节点在所述本地表格文件的树状数据中以及在所述远端表格文件的树状数据中的融合状态均为冲突。9.根据权利要求8所述的方法,其特征在于,判断所述当前遍历到的节点在所述本地表格文件的树状数据中以及在所述远端表格文件的树状数据中的比较结果是否相同之后,还包括:若比较结果不相同,则确定所述当前遍历到的节点在所述本地表格文件的树状数据中以及在所述远端表格文件的树状数据中的融合状态均为冲突。10.根据权利要求7-9任一所述的方法,其特征在于,所述根据所述远端表格文件的树状数据中各节点的比较结果,对所述本地表格文件的树状数据中节点的融合状态进行更新,包括:若所述远端表格文件的树状数据中目标节点的比较结果为新增,则在所述本地表格文件的树状数据中新增以所述目标节点为根节点的子树,并将所述目标节点以及子树的所有节点的融合状态更新为待新增;其中,所述目标节点指示融合状态为可融合的节点;若所述远端表格文件的树状数据中目标节点的比较结果为修改,且所述目标节点为单元格节点,则将所述本地表格文件的树状数据中所述目标节点的值修改为与所述远端表格文件的树状数据中所述目标节点的值一致,并将所述本地表格文件的树状数据中所述目标节点的融合状态更新为待修改;若所述远端表格文件的树状数据中目标节点的比较结果为删除,则将所述本地表格文件的树状数据中所述目标节点的子树下所有节点的融合状态更新为待删除。11.根据权利要求1所述的方法,其特征在于,所述根据所述本地表格文件更新后的树状数据中的节点的融合状态以及节点类型,对所述本地表格文件进行更新,包括:根据所述本地表格文件更新后的树状数据中节点的融合状态以及节点类型对所述本地表格文件更新后的树状数据中的各节点进行排序;根据排序结果,依次遍历各节点,并根据当前遍历到的节点的融合状态以及节点类型,对所述本地表格文件进行更新。12.根据权利要求11所述的方法,其特征在于,所述根据当前遍历到的节点的融合状态以及节点类型,对所述本地表格文件进行更新,包括:若当前遍历到的节点为工作表、行或列,且融合状态为删除,则在所述本地表格文件中删除所述节点对应位置的子单元;若当前遍历到的节点为工作表、行或列,且融合状态为新增,则在所述本地表格文件中所述节点对应位置上新增空的工作表、行或列;若当前遍历到的节点为单元格,且融合状态为新增或修改,则根据所述节点对应的行
节点和列节点确定所述节点在所述本地表格文件中的位置,并将所述远端表格文件中所述单元格的值写入所述位置中。13.根据权利要求1所述的方法,其特征在于,所述确定所述本地表格文件的树状数据中各节点的融合状态以及所述远端表格文件的树状数据中各节点的融合状态之后,还包括:根据节点的节点类型、融合状态、比较结果,以及预先配置的融合状态的展示样式、比较结果的展示样式,将所述本地表格文件的树状数据以及所述远端表格文件的树状数据分别转换为目标形式进行展示,所述目标形式包括:二维表格形式;响应于针对融合状态为冲突的表格输入的冲突处理操作,更改融合状态为冲突的表格的表格信息。14.一种文件处理装置,其特征在于,包括:生成模块、比较模块、确定模块、更新模块;所述生成模块,用于根据表格类型的文件的预设结构信息,将各待处理的表格文件进行转换,生成各待处理的表格文件的树状数据,所述预设结构信息包括:子单元的层级关系;不同待处理的表格文件中对应的子单元之间具有相同的标识信息;所述待处理的表格文件包括:原始表格文件、本地表格文件和远端表格文件;所述比较模块,用于对各待处理的表格文件的树状数据进行比较,得到各待处理的表格文件的树状数据中各节点的比较结果,所述比较结果表征不同的待处理的表格文件之间的相对修改内容;所述确定模块,用于根据所述本地表格文件的树状数据中各节点的比较结果以及所述远端表格文件对应的树状数据中各节点的比较结果,确定所述本地表格文件的树状数据中各节点的融合状态以及所述远端表格文件的树状数据中各节点的融合状态;所述更新模块,用于根据所述远端表格文件的树状数据中各节点的比较结果,对所述本地表格文件的树状数据中节点的融合状态进行更新,并根据所述本地表格文件更新后的树状数据中的节点的融合状态以及节点类型,对所述本地表格文件进行更新。15.一种电子设备,其特征在于,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的程序指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述程序指令,以实现如权利要求1至13任一所述的文件处理方法。16.一种计算机可读存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时以实现如权利要求1至13任一所述的文件处理方法。
技术总结
本申请提供一种文件处理方法、装置、电子设备及存储介质,涉及数据处理技术领域。该方法基于表格类型的文件的预设结构信息实现对待处理的表格文件的转换,生成待处理的表格文件的树状数据,从而基于待处理的表格文件的树状数据进行树比较,确保了不同表格文件之间各子单元的对应关系的准确性,从而保证了不同待处理的表格文件的比较结果的准确性,而基于比较结果,可进行本地表格文件和远端表格文件的融合和冲突判定,以确定出本地表格文件和远端表格文件之间的融合内容,从而实现本地表格文件和远端表格文件之间的自动融合处理,提高了文件融合的准确性。文件融合的准确性。文件融合的准确性。
技术研发人员:段丁瑞
受保护的技术使用者:网易(杭州)网络有限公司
技术研发日:2023.06.26
技术公布日:2023/9/7
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/