本发明属于信息处理技术领域,具体涉及一种表格合并方法。
背景技术:
随着网络技术的日新月异,数据可视化的应用越来越广泛,特别是传统图表显示方式在网页中的使用越来越多,要求也越来越高。在表格显示应用中一直存在一个让技术人员非常头疼的技术问题难以解决,那就是相同数据的单元格合并问题。如图1和图2所示。
对于以上的问题,技术人员往往是通过固化表格的方式解决问题。但随着数据的大量应用,固化表格样式已经不能解决现实问题,且不能通用,每当需求变化时均需调整系统或开发新的功能。因此,需要设计一套能够通用的合并表格显示的方法,用于相邻单元且在数据一致的情况下的自动合并操作。
技术实现要素:
本发明的目的在于克服现有技术的不足,提供一种表格合并方法。
本发明是通过以下技术方案实现的:
一种表格合并方法,包括以下步骤:
步骤一:定制通用数据接口,原始数据通过html封装进行传参,同时定义需求排除合并的行集合、列集合、特定数据;
步骤二:逐个遍历表格中的单元格,获取当前单元格的数据内容;
步骤三:首先判断当前单元格数据是否属于步骤一中所定义的需要排除的内容,如果属于排除的内容则忽略运算,再获取下一个单元格数据;
步骤四:如果相邻四个单元格中包含与当前单元格数据一致时,且当前数据允许合并时,则对含有相同数据的单元格进行状态置位,标识为可以合并;
步骤五:进行以上判断和操作后,再读取下一个单元格,直至完成所有单元格数据读取操作;
步骤六:最后通过接口将完成运算的数据输出。
在上述技术方案中,进一步的,步骤六输出数据为html格式,为第三方系统提供便利。
本发明的优点和有益效果为:
1、提供一种合并相同数据且单元格相邻的算法,不局限于开发语言;
2、自定义和自动计算相结合,达到灵活定制的目的;
3、定义输入接口,及时输出运算后结果;
4、采用被广泛使用的html格式输出数据,为第三方系统提供便利;
5、采用脚本语言编写,支持开发者个性化修改。
附图说明
图1是背景技术中的单元格合并例子。
图2是背景技术中的单元格合并例子。
图3是本发明实施例的表格合并方法的流程图。
对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,可以根据以上附图获得其他的相关附图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面结合具体实施例进一步说明本发明的技术方案。
一种表格合并方法,参见附图3,包括以下步骤:
步骤一:定制通用数据接口,原始数据通过html封装进行传参,同时定义需求排除合并的行集合、列集合、特定数据;
步骤二:逐个遍历表格中的单元格,获取当前单元格的数据内容;
步骤三:首先判断当前单元格数据是否属于步骤一中所定义的需要排除的内容,如果属于排除的内容则忽略运算,再获取下一个单元格数据;
步骤四:如果相邻四个单元格(上、下、左、右)中包含与当前单元格数据一致时,且当前数据允许合并时,则对含有相同数据的单元格进行状态置位,标识为可以合并;
步骤五:进行以上判断和操作后,再读取下一个单元格,直至完成所有单元格数据读取操作;
步骤六:最后通过接口将完成运算的数据输出,输出数据为html格式,为第三方系统提供便利。
下面是具体实现算法:
1、准备参数
a)表体数据列表
b)sheet页名称
c)表头第一行列名数组
d)表头第一行合并单元格参数数组
e)表头第一行数据填充索引
f)表头第二行列名数组(若没有设为null)
g)表头第二行合并单元格参数数组(若没有设为null)
h)表头第二行数据填充索引(若没有设为null)
i)表头第二行数据填充索引(若没有设为null)
j)表体数据字段名数组
k)表体数据索引
l)动态合并单元格列的个数(列的索引总数量-1)
2、创建一个表
hssfworkbookworkbook=newhssfworkbook();
hssfsheetsheet=workbook.createsheet(sheetname);
3、表头标题样式
hssffontfont=workbook.createfont();
font.setfontname("宋体");
font.setfontheightinpoints((short)12);//字体大小
hssfcellstylestyle=workbook.createcellstyle();
style.setborderbottom(hssfcellstyle.border_thin);//下边框
style.setborderleft(hssfcellstyle.border_thin);//左边框
style.setbordertop(hssfcellstyle.border_thin);//上边框
style.setborderright(hssfcellstyle.border_thin);//右边框
style.setfont(font);
style.setalignment(hssfcellstyle.align_center);//左右居中
style.setverticalalignment(hssfcellstyle.vertical_center);//上下居中
style.setlocked(true);
4、表体数据样式
5、展示第一行表头列名
6、动态合并第一行表头单元格
7、设置合并单元格的参数并初始化带边框的表头(这样做可以避免因为合并单元格后有的单元格的边框显示不出来)
8、动态合并单元格
以上对本发明做了示例性的描述,应该说明的是,在不脱离本发明的核心的情况下,任何简单的变形、修改或者其他本领域技术人员能够不花费创造性劳动的等同替换均落入本发明的保护范围。