表格排版方法及装置、计算机设备和可读存储介质
技术领域
本发明涉及数据处理技术领域,具体而言,涉及表格排版方法、表格排版装置、计算机设备和计算机可读存储介质。
背景技术
目前,在复合出版的领域,要求以结构化数据为核心,在数据加工环节尽量减少重复手工劳动,提升数据加工的效率和可复用性,并形成一套架构统一、数据统一、运行高效、配置灵活的自动化排版系统。现有的XML(Extensible Markup Language,可扩展标记语言)排版系统通过定制模板,实现自动化排版,并在自动化排版基础上实现版式的精细调整,达到缩短排版周期、节约出版成本、提高排版质量的目的。而表格的智能化排版是XML排版系统的重要组成部分,通过表格的智能化排版可以使得表格的版式更加美观、统一,从而进一步提高排版的质量和效率。
在上述自动化排版系统中,数据源是结构化数据,例如XML格式文件,通过自动化排版系统的处理后,自动将XML格式文件生成排版文件,而排版后的文件可以输出为PDF(Portable Document Format,便携式文档格式)等格式文件。但是,对于结构化数据中的表格数据,排版后的结果是单一的、不美观的,而且还需要人工再次调整表格效果,而人工的再次调整操作,可能会影响整个排版文件的排版结果,从而导致排版质量和效率的下降。
因此,如何提高表格排版的质量和效率,成为亟待解决的技术问题。
发明内容
本发明正是基于上述技术问题,提出了一种新的技术方案,可以在降低人工干预的情况下,实现表格排版的智能化,从而有效地提高表格排版的质量和效率,形成美观、统一的排版文件,提升用户体验。
有鉴于此,本发明的第一方面,提出了一种表格排版方法,包括:识别XML文件中的任一XML表格的预设表格类型;获取与所述预设表格类型匹配的预设表格模板;将所述任一XML表格中的表格数据填充至所述预设表格模板中,得到待排版XML表格;对所述待排版XML表格进行预设排版处理,得到目标XML表格。
在该技术方案中,通过为XML文件中不同类型的表格分别预先设置对应的用于排版的表格模板,即实现对于同一类型的表格采用同一种表格模板进行排版,以便于形成美观、统一的排版文件,以及在将XML文件的XML表格中的表格数据填充到对应的表格模板得到待排版XML表格后自动进行相应的预设排版处理,以通过XML表格的智能排版算法得到符合各XML文件需求的排版效果而无需人工的再次调整,如此,在有效地降低人工干预的情况下,能够实现XML表格排版的智能化,从而有效地提高XML表格排版的质量和效率,形成美观、统一的排版文件,提升用户体验。
在上述技术方案中,优选地,所述对所述待排版XML表格进行预设排版处理,得到目标XML表格,包括:将所述待排版XML表格中的每个单元格展开,以使每个单元格中填充的表格数据进行不换行显示;将展开单元格后的所述待排版XML表格按照每个单元格的列宽划分为多个列宽聚集区;确定划分列宽聚集区后的所述待排版XML表格的初始总列宽,并将所述初始总列宽调整至目标总列宽,得到中间排版XML表格;将所述中间排版XML表格按照每个单元格的行高划分为多个行高聚集区;确定划分行高聚集区后的所述中间排版XML表格的初始总行高,并将所述初始总行高调整至目标总行高,以得到所述目标XML表格。
在该技术方案中,对填充XML表格中的表格数据到对应的预设表格模板后得到待排版XML表格进行预设排版处理时,首先可以对该待排版XML表格进行进行列宽方向的展开操作,以使其中每个单元格中的内容均在一行显示,以首先确定表格中需进行显示的数据内容的情况,并在此基础上先自动划分列宽聚集区并在划分后将整个表格的总列宽自动调整到对应匹配的目标总列宽,继而在列宽调整完后自动划分行高聚集区并在划分后将整个表格的总行高自动调整到对应匹配的目标总行高,如此,可以在实现表格智能排版的同时,避免排版处理过程中出现表格数据被遮挡或隐藏等显示不完全的情况,从而影响排版后表格的视觉观感。
在上述任一技术方案中,优选地,所述将展开单元格后的所述待排版XML表格按照每个单元格的列宽划分为多个列宽聚集区,包括:获取展开单元格后的所述待排版XML表格中每个单元格的列宽分别占展开单元格后的所述待排版XML表格的总列宽的第一宽度比例;将所有所述第一宽度比例进行顺序排列,并按所述顺序根据每个所述第一宽度比例所处的预设宽度比例范围将其划分至对应的宽度比例聚集区;将每个所述宽度比例聚集区对应的所有单元格的列宽调整为同一中间列宽,以得到与每个所述宽度比例聚集区对应的所述列宽聚集区,所述中间列宽为每个所述宽度比例聚集区中最大的所述第一宽度比例对应的单元格的列宽。
在该技术方案中,对展开单元格后的待排版XML表格进行列宽聚集区划分时,可以根据表格当前的每个单元格的列宽占整个表格的总列宽的比例划分为不同的列宽聚集区,如此可以确保每个列宽聚集区中的所有单元格的列宽相近,进而有助于将每个列宽聚集区中的所有单元格的列宽调整为同一值,以使表格的列宽更加统一、合理,而为了使每个列宽聚集区中的所有单元格中的表格数据能够进行不换行显示,以不影响用户的表格数据查看体验,则可以将每个列宽聚集区中的所有单元格的列宽均调整为该列宽聚集区中所有列宽中最大的列宽。
在上述任一技术方案中,优选地,所述确定划分列宽聚集区后的所述待排版XML表格的初始总列宽,并将所述初始总列宽调整至目标总列宽,得到中间排版XML表格,包括:确定所述初始总列宽与所述目标总列宽的大小关系;当判定所述初始总列宽大于所述目标总列宽时,确定划分列宽聚集区后的所述待排版XML表格中单元格的左内空宽度和/或右内空宽度大于或等于预设宽度值的第一目标单元格;将所述第一目标单元铬的左内空宽度和/或右内空宽度缩小所述预设宽度值后得到第一XML表格,并判断所述第一XML表格的总列宽是否大于所述目标总列宽;若是,确定所述第一XML表格中单元格的列宽大于预设最小列宽的第二目标单元格;根据每个所述第二目标单元格的原列宽占所述第一XML表格的总列宽的第二宽度比例缩小每个所述第二目标单元格的列宽,得到每个所述第二目标单元格的新列宽;当所述新列宽大于所述预设最小列宽时,将所述新列宽作为每个所述第二目标单元格的最终列宽,否则将所述预设最小列宽作为每个所述第二目标单元格的最终列宽,得到所述中间排版XML表格;其中,所述预设宽度值=(所述初始总列宽-所述目标总列宽)/所述待排版XML表格的总列数/2。
在该技术方案中,可以根据划分列宽聚集区后的待排版XML表格的初始总列宽与整个表格预期的目标总列宽的大小关系,逐步将该初始总列宽调整到该目标总列宽,具体当该初始总列宽大于该目标总列宽时,首先去除每个单元格冗余的左、右内空,然后依据每个单元格实时的列宽与预设最小列宽的大小关系挑选需要进一步调整列宽的单元格并进行相应的列宽收缩调整,以在不影响表格数据显示的同时实现对划分列宽聚集区后的待排版XML表格的总列宽的智能调整,得到需进一步调整行高的中间排版XML表格。
在上述任一技术方案中,优选地,每个所述第二目标单元格需缩小的宽度=所述第二目标单元格的原列宽-所述第二宽度比例×(所述第一XML表格的总列宽-所述目标总列宽)。
在上述任一技术方案中,优选地,所述确定划分列宽聚集区后的所述待排版XML表格的初始总列宽,并将所述初始总列宽调整至目标总列宽,得到中间排版XML表格,还包括:当判定所述初始总列宽小于所述目标总列宽时,确定划分列宽聚集区后的所述待排版XML表格中单元格的列宽小于预设最小列宽/2的第三目标单元格;将每个所述第三目标单元格的列宽拉伸至所述预设最小列宽/2后得到第二XML表格;当所述第二XML表格的总列宽仍小于所述目标总列宽时,确定所述第二XML表格中单元格的列宽小于所述预设最小列宽的第四目标单元格;将每个所述第四目标单元格的列宽拉伸至所述预设最小列宽后,得到第三XML表格;当所述第三XML表格的总列宽仍小于所述目标总列宽时,根据所述第三XML表格的每个单元格的原列宽占所述第三XML表格的总列宽的第三宽度比例确定第一拉伸权重,根据所述第一拉伸权重对应拉伸所述第三XML表格的每个单元格,得到所述中间排版XML表格。
在该技术方案中,可以根据划分列宽聚集区后的待排版XML表格的初始总列宽与整个表格预期的目标总列宽的大小关系,逐步将该初始总列宽调整到该目标总列宽,具体当该初始总列宽小于该目标总列宽时,首先去除每个单元格冗余的左、右内空,然后依据每个单元格实时的列宽依次与预设最小列宽/2、预设最小列宽的大小关系挑选需要进一步调整列宽的单元格并进行相应的列宽拉伸调整,以在不影响表格数据显示的同时实现对划分列宽聚集区后的待排版XML表格的总列宽的智能调整,得到需进一步调整行高的中间排版XML表格。
在上述任一技术方案中,优选地,所述第三XML表格的每个单元格需拉伸的宽度=所述第一拉伸权重×所述第三宽度比例×(所述目标总列宽-所述第三XML表格的总列宽)×第一预设倍数,其中,所述第一拉伸权重与所述第三宽度比例呈反比,以及对所述第三XML表格中每个单元格分别对应的所述第一预设倍数、所述第一拉伸权重和所述第三宽度比例求乘积后,所有乘积结果之和等于1。
在上述任一技术方案中,优选地,所述将所述中间排版XML表格按照每个单元格的行高划分为多个行高聚集区,包括:获取所述中间排版XML表格中每个单元格的行高分别占所述中间排版XML表格的总行高的第一高度比例;将所有所述第一高度比例进行顺序排列,并按所述顺序根据每个所述第一高度比例所处的预设高度比例范围将其划分至对应的高度比例聚集区;将每个所述高度比例聚集区对应的所有单元格的行高调整为同一中间行高,以得到与每个所述高度比例聚集区对应的所述行高聚集区,所述中间行高为每个所述高度比例聚集区中最大的所述第一高度比例对应的单元格的行高。
在该技术方案中,对调整表格总列宽后得到的中间排版XML表格进行行高聚集区划分时,可以根据表格当前的每个单元格的行高占整个表格的总行高的比例划分为不同的行高聚集区,如此可以确保每个行高聚集区中的所有单元格的行高相近,进而有助于将每个行高聚集区中的所有单元格的行高调整为同一值,以使表格的行高更加统一、合理,且具体可以将每个行高聚集区中的所有单元格的行高均调整为该行高聚集区中所有行高中最大的行高。
在上述任一技术方案中,优选地,所述确定划分行高聚集区后的所述中间排版XML表格的初始总行高,并将所述初始总行高调整至目标总行高,以得到所述目标XML表格,包括:确定所述初始总行高与所述目标总行高的大小关系;当判定所述初始总行高大于所述目标总行高时,确定划分行高聚集区后的所述中间排版XML表格中单元格的上内空高度和/或下内空高度大于或等于预设高度值的第五目标单元格;将所述第五目标单元铬的上内空高度和/或下内空高度缩小所述预设高度值后得到第四XML表格,并判断所述第四XML表格的总行高是否大于所述目标总行高;若是,确定所述第四XML表格中单元格的行高大于预设最小行高的第六目标单元格;根据每个所述第六目标单元格的原行高占所述第四XML表格的总行高的第二高度比例缩小每个所述第六目标单元格的行高,得到每个所述第六目标单元格的新行高;当所述新行高大于所述预设最小行高时,将所述新行高作为每个所述第六目标单元格的最终行高,否则将所述预设最小行高作为每个所述第六目标单元格的最终行高,得到所述目标XML表格;其中,所述预设高度值=(所述初始总行高-所述目标总行高)/所述中间排版XML表格的总列数/2。
在该技术方案中,可以根据划分行高聚集区后的排版XML表格的初始总行高与整个表格预期的目标总行高的大小关系,逐步将该初始总行高调整到该目标总行高,具体当该初始总行高大于该目标总行高时,首先去除每个单元格冗余的上、下内空,然后依据每个单元格实时的行高与预设最小行高的大小关系挑选需要进一步调整行高的单元格并进行相应的行高收缩调整,以在不影响表格数据显示的同时实现对划分行高聚集区后的中间XML表格的总行高的智能调整,从而完成XML表格的智能排版。
在上述任一技术方案中,优选地,每个所述第六目标单元格需缩小的高度=所述第六目标单元格的原行高-所述第二高度比例×(所述第四XML表格的总行高-所述目标总行高)。
在上述任一技术方案中,优选地,所述确定划分行高聚集区后的所述中间排版XML表格的初始总行高,并将所述初始总行高调整至目标总行高,以得到所述目标XML表格,还包括:当判定所述初始总行高小于所述目标总行高时,确定划分行高聚集区后的所述中间排版XML表格中单元格的行高小于预设最小行高/2的第七目标单元格;将每个所述第七目标单元格的行高拉伸至所述预设最小行高/2后得到第五XML表格;当所述第五XML表格的总行高仍小于所述目标总行高时,确定所述第五XML表格中单元格的行高小于所述预设最小行高的第八目标单元格;将每个所述第八目标单元格的行高拉伸至所述预设最小行高后,得到第六XML表格;当所述第六XML表格的总行高仍小于所述目标总行高时,根据所述第六XML表格的每个单元格的原行高占所述第六XML表格的总行高的第三高度比例确定第二拉伸权重,根据所述第二拉伸权重对应拉伸所述第六XML表格的每个单元格,得到所述目标XML表格。
在该技术方案中,可以根据划分行高聚集区后的中间排版XML表格的初始总行高与整个表格预期的目标总行高的大小关系,逐步将该初始总行高调整到该目标总行高,具体当该初始总行高小于该目标总行高时,首先去除每个单元格冗余的上、下内空,然后依据每个单元格实时的行高依次与预设最小行高/2、预设最小行高的大小关系挑选需要进一步调整行高的单元格并进行相应的行高拉伸调整,以在不影响表格数据显示的同时实现对划分行高聚集区后的中间排版XML表格的总行高的智能调整,从而完成XML表格的智能排版。
在上述任一技术方案中,优选地,所述第六XML表格的每个单元格需拉伸的高度=所述第二拉伸权重×所述第三高度比例×(所述目标总行高-所述第六XML表格的总列宽)×第二预设倍数,其中,所述第二拉伸权重与所述第三高度比例呈反比,以及对所述第六XML表格中每个单元格分别对应的所述第二预设倍数、所述第二拉伸权重和所述第三高度比例求乘积后,所有乘积结果之和等于1。
在上述任一技术方案中,优选地,在所述识别XML文件中的任一XML表格的预设表格类型之前,还包括:去除XML文件中任一初始XML表格中的冗余单元格;将去除所述冗余单元格的所述任一初始XML表格中的结构化表格数据转化为XML表格数据;将进行数据转化后的所述任一初始XML表格进行初步排版得到具有固定列宽和固定行高的表格粗胚,以作为待进行表格识别的所述任一XML表格。
在该技术方案中,为了提高XML表格自动排版的效率和准确性,可以在识别表格类型前,先对XML文件中的所有初始XML表格进行去冗余处理,并在进行相应的数据转换后进行表格初步自动排版得到列宽和行高固定的XML表格,以作为进一步表格智能排版的输入。
本发明的第二方面,提出了一种表格排版装置,包括:识别模块,用于识别XML文件中的任一XML表格的预设表格类型;获取模块,用于获取与所述预设表格类型匹配的预设表格模板;填充模块,用于将所述任一XML表格中的表格数据填充至所述预设表格模板中,得到待排版XML表格;处理模块,用于对所述待排版XML表格进行预设排版处理,得到目标XML表格。
在该技术方案中,通过为XML文件中不同类型的表格分别预先设置对应的用于排版的表格模板,即实现对于同一类型的表格采用同一种表格模板进行排版,以便于形成美观、统一的排版文件,以及在将XML文件的XML表格中的表格数据填充到对应的表格模板得到待排版XML表格后自动进行相应的预设排版处理,以通过XML表格的智能排版算法得到符合各XML文件需求的排版效果而无需人工的再次调整,如此,在有效地降低人工干预的情况下,能够实现XML表格排版的智能化,从而有效地提高XML表格排版的质量和效率,形成美观、统一的排版文件,提升用户体验。
根据本发明的第三方面,提供了一种计算机设备,包括:处理器;用于储存处理器可执行指令的存储器,其中,处理器用于执行存储器中储存的可执行指令时实现如上述第一方面的技术方案中任一项所述的表格排版方法的步骤。
根据本发明的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如上述第一方面的技术方案中任一项所述的表格排版方法的步骤。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
图1示出了本发明实施例的表格排版方法的流程示意图;
图2示出了本发明实施例的对待排版XML表格进行预设排版处理的方法流程示意图;
图3示出了本发明实施例的划分列宽聚集区的方法流程示意图;
图4示出了本发明实施例的调整表格总列宽的方法流程示意图;
图5示出了本发明实施例的划分行高聚集区的方法流程示意图;
图6示出了本发明实施例的调整表格总行高的方法流程示意图;
图7示出了本发明实施例的表格排版装置的示意框图;
图8示出了本发明实施例的计算机设备的示意框图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
下面结合图1至图6对本发明实施例的表格排版方法进行具体说明。
如图1所示,根据本发明实施例的表格排版方法包括以下流程步骤:
步骤S102,识别XML文件中的任一XML表格的预设表格类型。
进一步地,在该步骤S102之前,所述表格排版方法还包括获取XML文件中用于进行表格排版的任一XML表格,具体执行为:去除XML文件中任一初始XML表格中的冗余单元格;将去除所述冗余单元格的所述任一初始XML表格中的结构化表格数据转化为XML表格数据;将进行数据转化后的所述任一初始XML表格进行初步排版得到具有固定列宽和固定行高的表格粗胚,以作为待进行表格识别的所述任一XML表格。
可以理解的是,为了提高XML表格自动排版的效率和准确性,可以在识别表格类型前,先对XML文件中的所有初始XML表格进行去冗余处理,使初始XML表格的行高、列宽与其中的结构化数据匹配,即首先对XML表格数据进行预飞,以对错误的数据进行纠错处理,并在进行相应的数据转换后实现表格初步自动排版得到列宽和行高固定的XML表格,比如将结构化表格数据进行Xlst转换,以作为进一步表格智能排版的输入。
具体地,XML表格的表格类型一般由表格中的结构化数据决定,其中,结构化数据包括html表格数据和cals xml表格数据等。
步骤S104,获取与所述预设表格类型匹配的预设表格模板。
具体地,为不同类型的XML表格匹配的预设表格模板中至少包括表格样式和表格框架。
步骤S106,将所述任一XML表格中的表格数据填充至所述预设表格模板中,得到待排版XML表格。
步骤S108,对所述待排版XML表格进行预设排版处理,得到目标XML表格。
在该实施例中,通过为XML文件中不同类型的表格分别预先设置对应的用于排版的表格模板,即实现对于同一类型的表格采用同一种表格模板进行排版,以便于形成美观、统一的排版文件,以及在将XML文件的XML表格中的表格数据填充到对应的表格模板得到待排版XML表格后自动进行相应的预设排版处理,以通过XML表格的智能排版算法得到符合各XML文件需求的排版效果而无需人工的再次调整,如此,在有效地降低人工干预的情况下,能够实现XML表格排版的智能化,从而有效地提高XML表格排版的质量和效率,形成美观、统一的排版文件,提升用户体验。
进一步地,上述实施例中的所述步骤S108具体可以执行为如图2所示的流程步骤,包括:
步骤S202,将所述待排版XML表格中的每个单元格展开,以使每个单元格中填充的表格数据进行不换行显示。
具体地,可以将待排版XML表格中的每个单元格的列宽展开为原来的3倍,以使其中的表格数据呈一行显示;当然,在本发明的其他实施例中,还可以将列宽展开为其他倍数,视实际情况而定。
步骤S204,将展开单元格后的所述待排版XML表格按照每个单元格的列宽划分为多个列宽聚集区。
步骤S206,确定划分列宽聚集区后的所述待排版XML表格的初始总列宽,并将所述初始总列宽调整至目标总列宽,得到中间排版XML表格。
步骤S208,将所述中间排版XML表格按照每个单元格的行高划分为多个行高聚集区。
步骤S210,确定划分行高聚集区后的所述中间排版XML表格的初始总行高,并将所述初始总行高调整至目标总行高,以得到所述目标XML表格。
在该实施例中,对填充XML表格中的表格数据到对应的预设表格模板后得到待排版XML表格进行预设排版处理时,首先可以对该待排版XML表格进行进行列宽方向的展开操作,以使其中每个单元格中的内容均在一行显示,以首先确定表格中需进行显示的数据内容的情况,并在此基础上先自动划分列宽聚集区并在划分后将整个表格的总列宽自动调整到对应匹配的目标总列宽,继而在列宽调整完后自动划分行高聚集区并在划分后将整个表格的总行高自动调整到对应匹配的目标总行高,如此,可以在实现表格智能排版的同时,避免排版处理过程中出现表格数据被遮挡或隐藏等显示不完全的情况,从而影响排版后表格的视觉观感。
进一步地,上述实施例中的步骤S204可以具体执行为如图3所示的流程步骤,包括:
步骤S302,获取展开单元格后的所述待排版XML表格中每个单元格的列宽分别占展开单元格后的所述待排版XML表格的总列宽的第一宽度比例。
步骤S304,将所有所述第一宽度比例进行顺序排列,并按所述顺序根据每个所述第一宽度比例所处的预设宽度比例范围将其划分至对应的宽度比例聚集区。
具体地,比例越大有效范围越大,比例越小有效范围越小,则根据有效范围区域获取宽度比例的据聚集区。
步骤S306,将每个所述宽度比例聚集区对应的所有单元格的列宽调整为同一中间列宽,以得到与每个所述宽度比例聚集区对应的所述列宽聚集区,所述中间列宽为每个所述宽度比例聚集区中最大的所述第一宽度比例对应的单元格的列宽。
在该实施例中,对展开单元格后的待排版XML表格进行列宽聚集区划分时,可以根据表格当前的每个单元格的列宽占整个表格的总列宽的比例划分为不同的列宽聚集区,如此可以确保每个列宽聚集区中的所有单元格的列宽相近,进而有助于将每个列宽聚集区中的所有单元格的列宽调整为同一值,以使表格的列宽更加统一、合理,而为了使每个列宽聚集区中的所有单元格中的表格数据能够进行不换行显示,以不影响用户的表格数据查看体验,则可以将每个列宽聚集区中的所有单元格的列宽均调整为该列宽聚集区中所有列宽中最大的列宽。
进一步地,上述实施例中的步骤S206可以具体执行为如图4所示的流程步骤,包括:
步骤S402,确定所述初始总列宽与所述目标总列宽的大小关系。
步骤S404,当判定所述初始总列宽大于所述目标总列宽时,确定划分列宽聚集区后的所述待排版XML表格中单元格的左内空宽度和/或右内空宽度大于或等于预设宽度值的第一目标单元格。
具体地,所述预设宽度值=(所述初始总列宽-所述目标总列宽)/所述待排版XML表格的总列数/2。
步骤S406,将所述第一目标单元铬的左内空宽度和/或右内空宽度缩小所述预设宽度值后得到第一XML表格,并判断所述第一XML表格的总列宽是否大于所述目标总列宽。
步骤S408,若是,确定所述第一XML表格中单元格的列宽大于预设最小列宽的第二目标单元格。
步骤S410,根据每个所述第二目标单元格的原列宽占所述第一XML表格的总列宽的第二宽度比例缩小每个所述第二目标单元格的列宽,得到每个所述第二目标单元格的新列宽。
具体地,每个所述第二目标单元格需缩小的宽度=所述第二目标单元格的原列宽-所述第二宽度比例×(所述第一XML表格的总列宽-所述目标总列宽)。
步骤S412,当所述新列宽大于所述预设最小列宽时,将所述新列宽作为每个所述第二目标单元格的最终列宽,否则将所述预设最小列宽作为每个所述第二目标单元格的最终列宽,以得到所述中间排版XML表格,实现所占比例大的列宽减小的值大,所占比例小的列宽减少的小。
由上可知,可以根据划分列宽聚集区后的待排版XML表格的初始总列宽与整个表格预期的目标总列宽的大小关系,逐步将该初始总列宽调整到该目标总列宽,具体当该初始总列宽大于该目标总列宽时,首先去除每个单元格冗余的左、右内空,然后依据每个单元格实时的列宽与预设最小列宽的大小关系挑选需要进一步调整列宽的单元格并进行相应的列宽收缩调整,以在不影响表格数据显示的同时实现对划分列宽聚集区后的待排版XML表格的总列宽的智能调整,得到需进一步调整行高的中间排版XML表格。
进一步地,上述实施例中的步骤S206具体还包括如图4所示的如下流程步骤:
步骤S414,当判定所述初始总列宽小于所述目标总列宽时,确定划分列宽聚集区后的所述待排版XML表格中单元格的列宽小于预设最小列宽/2的第三目标单元格。
步骤S416,将每个所述第三目标单元格的列宽拉伸至所述预设最小列宽/2后得到第二XML表格。
步骤S418,当所述第二XML表格的总列宽仍小于所述目标总列宽时,确定所述第二XML表格中单元格的列宽小于所述预设最小列宽的第四目标单元格。
步骤S420,将每个所述第四目标单元格的列宽拉伸至所述预设最小列宽后,得到第三XML表格。
步骤S422,当所述第三XML表格的总列宽仍小于所述目标总列宽时,根据所述第三XML表格的每个单元格的原列宽占所述第三XML表格的总列宽的第三宽度比例确定第一拉伸权重,根据所述第一拉伸权重对应拉伸所述第三XML表格的每个单元格,得到所述中间排版XML表格。
具体地,所述第三XML表格的每个单元格需拉伸的宽度=所述第一拉伸权重×所述第三宽度比例×(所述目标总列宽-所述第三XML表格的总列宽)×第一预设倍数,其中,所述第一拉伸权重与所述第三宽度比例呈反比,以及对所述第三XML表格中每个单元格分别对应的所述第一预设倍数、所述第一拉伸权重和所述第三宽度比例求乘积后,所有乘积结果之和等于1。
也就是说,通过宽度比例获取拉伸权重值,比例越大,权重越小,比例越小,权重越大,如此,通过采用权重的处理方式,使宽的列拉伸的数据稍微小些,窄的列拉伸的数据大些,则可以避免按比例拉大列宽导致的宽的列变得越宽的情况出现,达到排版后表格所需的美观度;另外,所述第一预设倍数为根据汇总多个相关数据总结的经验值,可以视具体情况而定。
由上可知,可以根据划分列宽聚集区后的待排版XML表格的初始总列宽与整个表格预期的目标总列宽的大小关系,逐步将该初始总列宽调整到该目标总列宽,具体当该初始总列宽小于该目标总列宽时,首先去除每个单元格冗余的左、右内空,然后依据每个单元格实时的列宽依次与预设最小列宽/2、预设最小列宽的大小关系挑选需要进一步调整列宽的单元格并进行相应的列宽拉伸调整,以在不影响表格数据显示的同时实现对划分列宽聚集区后的待排版XML表格的总列宽的智能调整,使每个XML表格在排版后的宽度最终大小为通栏(列),即单栏(列)宽度为等宽度,以得到需进一步调整行高的中间排版XML表格。
进一步地,上述实施例中的步骤S208可以具体执行为如图5所示的流程步骤,包括:
步骤S502,获取所述中间排版XML表格中每个单元格的行高分别占所述中间排版XML表格的总行高的第一高度比例。
步骤S504,将所有所述第一高度比例进行顺序排列,并按所述顺序根据每个所述第一高度比例所处的预设高度比例范围将其划分至对应的高度比例聚集区。
具体地,比例越大有效范围越大,比例越小有效范围越小,则根据有效范围区域获取高度比例的据聚集区。
步骤S506,将每个所述高度比例聚集区对应的所有单元格的行高调整为同一中间行高,以得到与每个所述高度比例聚集区对应的所述行高聚集区,所述中间行高为每个所述高度比例聚集区中最大的所述第一高度比例对应的单元格的行高。
在该实施例中,对调整表格总列宽后得到的中间排版XML表格进行行高聚集区划分时,可以根据表格当前的每个单元格的行高占整个表格的总行高的比例划分为不同的行高聚集区,如此可以确保每个行高聚集区中的所有单元格的行高相近,进而有助于将每个行高聚集区中的所有单元格的行高调整为同一值,以使表格的行高更加统一、合理,且具体可以将每个行高聚集区中的所有单元格的行高均调整为该行高聚集区中所有行高中最大的行高。
进一步地,上述实施例中的步骤S210可以具体执行为如图6所示的流程步骤,包括:
步骤S602,确定所述初始总行高与所述目标总行高的大小关系。
步骤S604,当判定所述初始总行高大于所述目标总行高时,确定划分行高聚集区后的所述中间排版XML表格中单元格的上内空高度和/或下内空高度大于或等于预设高度值的第五目标单元格。
具体地,所述预设高度值=(所述初始总行高-所述目标总行高)/所述中间排版XML表格的总列数/2。
步骤S606,将所述第五目标单元铬的上内空高度和/或下内空高度缩小所述预设高度值后得到第四XML表格,并判断所述第四XML表格的总行高是否大于所述目标总行高。
步骤S608,若是,确定所述第四XML表格中单元格的行高大于预设最小行高的第六目标单元格。
步骤S610,根据每个所述第六目标单元格的原行高占所述第四XML表格的总行高的第二高度比例缩小每个所述第六目标单元格的行高,得到每个所述第六目标单元格的新行高。
具体地,每个所述第六目标单元格需缩小的高度=所述第六目标单元格的原行高-所述第二高度比例×(所述第四XML表格的总行高-所述目标总行高)。
步骤S612,当所述新行高大于所述预设最小行高时,将所述新行高作为每个所述第六目标单元格的最终行高,否则将所述预设最小行高作为每个所述第六目标单元格的最终行高,得到所述目标XML表格,实现所占比例大的行高减小的值大,所占比例小的行高减少的小。
由上可知,可以根据划分行高聚集区后的排版XML表格的初始总行高与整个表格预期的目标总行高的大小关系,逐步将该初始总行高调整到该目标总行高,具体当该初始总行高大于该目标总行高时,首先去除每个单元格冗余的上、下内空,然后依据每个单元格实时的行高与预设最小行高的大小关系挑选需要进一步调整行高的单元格并进行相应的行高收缩调整,以在不影响表格数据显示的同时实现对划分行高聚集区后的中间XML表格的总行高的智能调整,从而完成XML表格的智能排版。
进一步地,上述实施例中的步骤S210具体还包括如图6所示的如下流程步骤:
步骤S614,当判定所述初始总行高小于所述目标总行高时,确定划分行高聚集区后的所述中间排版XML表格中单元格的行高小于预设最小行高/2的第七目标单元格。
步骤S616,将每个所述第七目标单元格的行高拉伸至所述预设最小行高/2后得到第五XML表格。
步骤S618,所述第五XML表格的总行高仍小于所述目标总行高时,确定所述第五XML表格中单元格的行高小于所述预设最小行高的第八目标单元格。
步骤S620,将每个所述第八目标单元格的行高拉伸至所述预设最小行高后,得到第六XML表格。
步骤S622,当所述第六XML表格的总行高仍小于所述目标总行高时,根据所述第六XML表格的每个单元格的原行高占所述第六XML表格的总行高的第三高度比例确定第二拉伸权重,根据所述第二拉伸权重对应拉伸所述第六XML表格的每个单元格,得到所述目标XML表格。
具体地,所述第六XML表格的每个单元格需拉伸的高度=所述第二拉伸权重×所述第三高度比例×(所述目标总行高-所述第六XML表格的总列宽)×第二预设倍数,其中,所述第二拉伸权重与所述第三高度比例呈反比,以及对所述第六XML表格中每个单元格分别对应的所述第二预设倍数、所述第二拉伸权重和所述第三高度比例求乘积后,所有乘积结果之和等于1。
也就是说,通过高度比例获取拉伸权重值,比例越大,权重越小,比例越小,权重越大,如此,通过采用权重的处理方式,使高的行拉伸的数据稍微小些,矮的行拉伸的数据大些,则可以避免按比例拉大行高导致的高的行变得越高的情况出现,达到排版后表格所需的美观度;另外,所述第二预设倍数为根据汇总多个相关数据总结的经验值,可以视具体情况而定。
由上可知,可以根据划分行高聚集区后的中间排版XML表格的初始总行高与整个表格预期的目标总行高的大小关系,逐步将该初始总行高调整到该目标总行高,具体当该初始总行高小于该目标总行高时,首先去除每个单元格冗余的上、下内空,然后依据每个单元格实时的行高依次与预设最小行高/2、预设最小行高的大小关系挑选需要进一步调整行高的单元格并进行相应的行高拉伸调整,以在不影响表格数据显示的同时实现对划分行高聚集区后的中间排版XML表格的总行高的智能调整,从而完成XML表格的智能排版。
综上,通过多次递归调用上述流程步骤,直到任一XML表格的表格总列宽与其目标总列宽一致、表格总行高与其目标总行高一致,而且,通过上述智能的表格排版方法,可以使得90%以上的XML表格能够实现排版效果美观和统一,且大部分表格可以不必再次进行人工精细调整。
图7示出了本发明实施例的表格排版装置的示意框图。
如图7所示,根据本发明实施例的表格排版装置70包括:识别模块702、获取模块704、填充模块706和处理模块708。
其中,所述识别模块702用于识别XML文件中的任一XML表格的预设表格类型;所述获取模块704用于获取与所述预设表格类型匹配的预设表格模板;所述填充模块706用于将所述任一XML表格中的表格数据填充至所述预设表格模板中,得到待排版XML表格;所述处理模块708用于对所述待排版XML表格进行预设排版处理,得到目标XML表格。
在该实施例中,通过为XML文件中不同类型的表格分别预先设置对应的用于排版的表格模板,即实现对于同一类型的表格采用同一种表格模板进行排版,以便于形成美观、统一的排版文件,以及在将XML文件的XML表格中的表格数据填充到对应的表格模板得到待排版XML表格后自动进行相应的预设排版处理,以通过XML表格的智能排版算法得到符合各XML文件需求的排版效果而无需人工的再次调整,如此,在有效地降低人工干预的情况下,能够实现XML表格排版的智能化,从而有效地提高XML表格排版的质量和效率,形成美观、统一的排版文件,提升用户体验。
进一步地,上述实施例中的所述处理模块708具体用于:将所述待排版XML表格中的每个单元格展开,以使每个单元格中填充的表格数据进行不换行显示;将展开单元格后的所述待排版XML表格按照每个单元格的列宽划分为多个列宽聚集区;确定划分列宽聚集区后的所述待排版XML表格的初始总列宽,并将所述初始总列宽调整至目标总列宽,得到中间排版XML表格;将所述中间排版XML表格按照每个单元格的行高划分为多个行高聚集区;确定划分行高聚集区后的所述中间排版XML表格的初始总行高,并将所述初始总行高调整至目标总行高,以得到所述目标XML表格。
进一步地,上述实施例中的所述处理模块708具体还用于:获取展开单元格后的所述待排版XML表格中每个单元格的列宽分别占展开单元格后的所述待排版XML表格的总列宽的第一宽度比例;将所有所述第一宽度比例进行顺序排列,并按所述顺序根据每个所述第一宽度比例所处的预设宽度比例范围将其划分至对应的宽度比例聚集区;将每个所述宽度比例聚集区对应的所有单元格的列宽调整为同一中间列宽,以得到与每个所述宽度比例聚集区对应的所述列宽聚集区,所述中间列宽为每个所述宽度比例聚集区中最大的所述第一宽度比例对应的单元格的列宽。
进一步地,上述实施例中的所述处理模块708具体还用于:确定所述初始总列宽与所述目标总列宽的大小关系;当判定所述初始总列宽大于所述目标总列宽时,确定划分列宽聚集区后的所述待排版XML表格中单元格的左内空宽度和/或右内空宽度大于或等于预设宽度值的第一目标单元格;将所述第一目标单元铬的左内空宽度和/或右内空宽度缩小所述预设宽度值后得到第一XML表格,并判断所述第一XML表格的总列宽是否大于所述目标总列宽;若是,确定所述第一XML表格中单元格的列宽大于预设最小列宽的第二目标单元格;根据每个所述第二目标单元格的原列宽占所述第一XML表格的总列宽的第二宽度比例缩小每个所述第二目标单元格的列宽,得到每个所述第二目标单元格的新列宽;当所述新列宽大于所述预设最小列宽时,将所述新列宽作为每个所述第二目标单元格的最终列宽,否则将所述预设最小列宽作为每个所述第二目标单元格的最终列宽,得到所述中间排版XML表格;其中,所述预设宽度值=(所述初始总列宽-所述目标总列宽)/所述待排版XML表格的总列数/2。
进一步地,在上述实施例中,每个所述第二目标单元格需缩小的宽度=所述第二目标单元格的原列宽-所述第二宽度比例×(所述第一XML表格的总列宽-所述目标总列宽)。
进一步地,上述实施例中的所述处理模块708具体还用于:当判定所述初始总列宽小于所述目标总列宽时,确定划分列宽聚集区后的所述待排版XML表格中单元格的列宽小于预设最小列宽/2的第三目标单元格;将每个所述第三目标单元格的列宽拉伸至所述预设最小列宽/2后得到第二XML表格;当所述第二XML表格的总列宽仍小于所述目标总列宽时,确定所述第二XML表格中单元格的列宽小于所述预设最小列宽的第四目标单元格;将每个所述第四目标单元格的列宽拉伸至所述预设最小列宽后,得到第三XML表格;当所述第三XML表格的总列宽仍小于所述目标总列宽时,根据所述第三XML表格的每个单元格的原列宽占所述第三XML表格的总列宽的第三宽度比例确定第一拉伸权重,根据所述第一拉伸权重对应拉伸所述第三XML表格的每个单元格,得到所述中间排版XML表格。
进一步地,在上述实施例中,所述第三XML表格的每个单元格需拉伸的宽度=所述第一拉伸权重×所述第三宽度比例×(所述目标总列宽-所述第三XML表格的总列宽)×第一预设倍数,其中,所述第一拉伸权重与所述第三宽度比例呈反比,以及对所述第三XML表格中每个单元格分别对应的所述第一预设倍数、所述第一拉伸权重和所述第三宽度比例求乘积后,所有乘积结果之和等于1。
进一步地,上述实施例中的所述处理模块708具体还用于:获取所述中间排版XML表格中每个单元格的行高分别占所述中间排版XML表格的总行高的第一高度比例;将所有所述第一高度比例进行顺序排列,并按所述顺序根据每个所述第一高度比例所处的预设高度比例范围将其划分至对应的高度比例聚集区;将每个所述高度比例聚集区对应的所有单元格的行高调整为同一中间行高,以得到与每个所述高度比例聚集区对应的所述行高聚集区,所述中间行高为每个所述高度比例聚集区中最大的所述第一高度比例对应的单元格的行高。
进一步地,上述实施例中的所述处理模块708具体还用于:确定所述初始总行高与所述目标总行高的大小关系;当判定所述初始总行高大于所述目标总行高时,确定划分行高聚集区后的所述中间排版XML表格中单元格的上内空高度和/或下内空高度大于或等于预设高度值的第五目标单元格;将所述第五目标单元铬的上内空高度和/或下内空高度缩小所述预设高度值后得到第四XML表格,并判断所述第四XML表格的总行高是否大于所述目标总行高;若是,确定所述第四XML表格中单元格的行高大于预设最小行高的第六目标单元格;根据每个所述第六目标单元格的原行高占所述第四XML表格的总行高的第二高度比例缩小每个所述第六目标单元格的行高,得到每个所述第六目标单元格的新行高;当所述新行高大于所述预设最小行高时,将所述新行高作为每个所述第六目标单元格的最终行高,否则将所述预设最小行高作为每个所述第六目标单元格的最终行高,得到所述目标XML表格;其中,所述预设高度值=(所述初始总行高-所述目标总行高)/所述中间排版XML表格的总列数/2。
进一步地,在上述实施例中,每个所述第六目标单元格需缩小的高度=所述第六目标单元格的原行高-所述第二高度比例×(所述第四XML表格的总行高-所述目标总行高)。
进一步地,上述实施例中的所述处理模块708具体还用于:当判定所述初始总行高小于所述目标总行高时,确定划分行高聚集区后的所述中间排版XML表格中单元格的行高小于预设最小行高/2的第七目标单元格;将每个所述第七目标单元格的行高拉伸至所述预设最小行高/2后得到第五XML表格;当所述第五XML表格的总行高仍小于所述目标总行高时,确定所述第五XML表格中单元格的行高小于所述预设最小行高的第八目标单元格;将每个所述第八目标单元格的行高拉伸至所述预设最小行高后,得到第六XML表格;当所述第六XML表格的总行高仍小于所述目标总行高时,根据所述第六XML表格的每个单元格的原行高占所述第六XML表格的总行高的第三高度比例确定第二拉伸权重,根据所述第二拉伸权重对应拉伸所述第六XML表格的每个单元格,得到所述目标XML表格。
进一步地,在上述实施例中,所述第六XML表格的每个单元格需拉伸的高度=所述第二拉伸权重×所述第三高度比例×(所述目标总行高-所述第六XML表格的总列宽)×第二预设倍数,其中,所述第二拉伸权重与所述第三高度比例呈反比,以及对所述第六XML表格中每个单元格分别对应的所述第二预设倍数、所述第二拉伸权重和所述第三高度比例求乘积后,所有乘积结果之和等于1。
进一步地,上述实施例中的所述表格排版装置70还包括:去除模块,用于去除XML文件中任一初始XML表格中的冗余单元格;转换模块,用于将去除所述冗余单元格的所述任一初始XML表格中的结构化表格数据转化为XML表格数据;调整模块,用于将进行数据转化后的所述任一初始XML表格进行初步排版得到具有固定列宽和固定行高的表格粗胚,以作为待进行表格识别的所述任一XML表格。
图8示出了本发明实施例的计算机设备的示意框图。
如图8所示,根据本发明实施例的计算机设备80,包括处理器802和存储器804,其中,存储器804上存储有可在处理器802上运行的计算机程序,其中存储器804和处理器802之间可以通过总线连接,该处理器802用于执行存储器804中存储的计算机程序时实现如上实施例中所述的表格排版方法的步骤。
本发明实施例的表格排版方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
本发明实施例的表格排版装置和计算机设备中的单元可以根据实际需要进行合并、划分和删减。
根据本发明的实施例,提出了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上实施例中所述的表格排版方法的步骤。
进一步地,可以理解的是,流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等;以及上述提到的计算机设备可以为服务器。
以上结合附图详细说明了本发明的技术方案,通过该技术方案,可以在降低人工干预的情况下,实现表格排版的智能化,从而有效地提高表格排版的质量和效率,形成美观、统一的排版文件,提升用户体验。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。