一种快速生成Excel表单的方法技术

技术编号:15220675 阅读:111 留言:0更新日期:2017-04-26 21:34
本发明专利技术涉及系统软件报表技术领域,尤其是一种快速生成Excel的方法。本发明专利技术包含了6个核心部分:快速创建大标题;快速创建信息‑用户名和日期;快速创建小标题;快速创建数据列表且自动合并单元格;快速插入图片;快速保存到文件。本发明专利技术使用了POI的HSSF作为基础,进行了代码封装以及加入了自动合并单元格的算法,开发者只需要关注数据,不再需要费神于处理逻辑,用法简单,快速便捷,极大地减轻了开发者的编码难度。

Method for quickly generating Excel

The invention relates to the technical field of system software report, in particular to a method for rapidly generating Excel. The present invention includes 6 core parts: to quickly create headlines; quickly create information user name and date; quickly create headings; quickly create a list of data and automatically merge cells; fast insert pictures; quick save to file. The invention uses POI as the basis of HSSF, the code package and automatically merge cells into our algorithm, developers only need to focus on the data, no longer bother to processing logic, the usage is simple, fast and convenient, greatly reducing the developer's encoding difficulty.

【技术实现步骤摘要】

本专利技术涉及系统软件报表
,尤其是一种快速生成Excel的方法。技术背景系统软件里,将报表导出为Excel是很常见的功能。在Apache软件基金会的开放源码函式库中,POI提供了Java程序对MicFosoftOffice格式档案读和写的功能,其中HSSF是对于Excel的操作,开发者可以用它达到很多不同的目的;但是使用它生成Excel的时候,可能需要编写大量的代码。在现有的技术里,有很多以POI的HSSF作为基础的专利技术,但是它们都没有支持数据列表单元格的纵向和横向合并;此外,在现有的专利技术里,报表元素都是按顺序从上往下紧密排列的,并没有支持报表元素的自定义左侧空白列数和上方空白行数。
技术实现思路
本专利技术解决的技术问题在于提供一种快速生成Excel的方法;以POI的HSSF作为基础,进行了代码封装以及加入了自动合并单元格的算法,用法简单,快速便捷,极大地减轻了开发者的编码难度。本专利技术解决上述技术问题的技术方案是:所述的方法包括快速创建大标题、快速创建信息-用户名和日期、快速创建小标题、快速创建数据列表且快速插入图片、快速保存到文件;所述的数据列表,是数据的二维数组,允许设置上方空白行数和左侧空白列数,利用合并算法将空的单元格进行合并;具体步骤是:获取所有单元格的数据,作为二维数组;定义起点坐标数组和终点坐标数组,起点坐标相当于合并矩形的左上角,终点坐标相当于合并矩形的右下角,根据这两个坐标,可以进行最后的单元格合并;第一个单元格即坐标为[0,0]的单元格,以及非空的单元格都是合并的起点;每一列从上到下进行遍历,当找到合并的起点时,先纵向找到连续不断的空白单元格,作为纵向合并范围,然后以纵向合并范围为出发线,向右找到空白单元格,作为横向合并范围,组成最大矩形,便将该矩形的左上角坐标存到起点坐标数组,将该矩形的右下角坐标存到终点坐标数组,矩形范围中的单元格全都标记为“已遍历”,不再进行判断;继续每一列从上到下进行遍历,直至所有单元格都被标记为“已遍历”;遍历结束之后,根据起点坐标数组和终点坐标数组,进行单元格合并。所述的快速创建大标题中大标题的样式为:行偏高、字号偏大、跨列居中,并且允许设置跨列数。所述的快速创建信息-用户名和日期中,信息的样式为:跨列居右、内容;并且允许设置跨列数;内容可以是“导出人:liangwp导出时间:2016-07-26”。所述的快速创建小标题中的小标题的样式为:跨列居左、有背景色,并且允许设置上方空白行数和左侧空白列数。所述的插入图片的格式为dib、emf、jpeg、pict、png、wmf,并且允许设置上方空白行数和左侧空白列数。所述的快速保存到文件的文件格式为xls。本专利技术命名为CzExcel,使用了POI的HSSF作为基础,进行了代码封装以及加入了自动合并单元格的算法,开发者只需要关注数据,不再需要费神于处理逻辑,用法简单,快速便捷,极大地减轻了开发者的编码难度。以POI的HSSF作为基础,进行了代码封装以及加入了自动合并单元格的算法,开发者只需要关注数据,不再需要费神于处理逻辑,用法简单,快速便捷,极大地减轻了开发者的编码难度。本专利技术的最大特点就在于智能识别然后自动进行纵向和横向的单元格合并,这有别于现有的专利技术,现有的专利技术只达到了表头单元格的合并,并没有支持数据列表的单元格合并,本专利技术则支持据列表单元格的自动纵向和横向合并;并且本专利技术允许设置报表元素的上方空白行数和左侧空白列数,达到了自定义位置的效果,灵活便捷。附图说明下面结合附图对本专利技术进一步说明:图1为本专利技术的功能图;图2为本专利技术的自动合并单元格算法的流程图;具体实施方式1、CzExcel的功能如图1所示。2、CzExcel依赖于开源的代码包poi.jar,插入图片还需要commons-codec.jar(插入图片的话,poi版本要在3.12以上)。3、快速创建大标题,行偏高、字号偏大、跨列居中,并且允许设置上方空白行数和左侧空白列数,代码实现如下:4、快速创建信息-用户名和日期,跨列居右、格式如“导出人:liangwp导出时间:2016-07-26”,并且允许设置上方空白行数和左侧空白列数,代码实现如下:5、快速创建小标题,跨列居左、有背景色,并且允许设置上方空白行数和左侧空白列数,代码实现如下:6、自动合并单元格,算法流程,如图2所示。思路为:获取所有单元格的数据,作为二维数组;定义起点坐标数组和终点坐标数组,起点坐标相当于合并矩形的左上角,终点坐标相当于合并矩形的右下角,根据这两个坐标,可以进行最后的单元格合并;第一个单元格即坐标为[0,0]的单元格,以及非空的单元格都是合并的起点;每一列从上到下进行遍历,当找到合并的起点时,先纵向找到连续不断的空白单元格,作为纵向合并范围,然后以纵向合并范围为出发线,向右找到空白单元格,作为横向合并范围,组成最大矩形,便将该矩形的左上角坐标存到起点坐标数组,将该矩形的右下角坐标存到终点坐标数组,矩形范围中的单元格全都标记为“已遍历”,不再进行判断;继续每一列从上到下进行遍历,直至所有单元格都被标记为“已遍历”;遍历结束之后,根据起点坐标数组和终点坐标数组,进行单元格合并。7、快速创建数据列表且自动合并单元格,并且允许设置上方空白行数和左侧空白列数,代码实现如下:8、快速插入图片,格式为dib、emf、jpeg、pict、png、wmf,并且允许设置上方空白行数和左侧空白列数,代码实现如下:9、快速保存到文件,格式为xls,代码实现如下:本文档来自技高网...

【技术保护点】
一种快速生成Excel的方法,其特征在于,所述的方法包括快速创建大标题、快速创建信息‑用户名和日期、快速创建小标题、快速创建数据列表且快速插入图片、快速保存到文件;所述的数据列表,是数据的二维数组,允许设置上方空白行数和左侧空白列数,利用合并算法将空的单元格进行合并;具体步骤是:获取所有单元格的数据,作为二维数组;定义起点坐标数组和终点坐标数组,起点坐标相当于合并矩形的左上角,终点坐标相当于合并矩形的右下角,根据这两个坐标,可以进行最后的单元格合并;第一个单元格即坐标为[0,0]的单元格,以及非空的单元格都是合并的起点;每一列从上到下进行遍历,当找到合并的起点时,先纵向找到连续不断的空白单元格,作为纵向合并范围,然后以纵向合并范围为出发线,向右找到空白单元格,作为横向合并范围,组成最大矩形,便将该矩形的左上角坐标存到起点坐标数组,将该矩形的右下角坐标存到终点坐标数组,矩形范围中的单元格全都标记为“已遍历”,不再进行判断;继续每一列从上到下进行遍历,直至所有单元格都被标记为“已遍历”;遍历结束之后,根据起点坐标数组和终点坐标数组,进行单元格合并。

【技术特征摘要】
1.一种快速生成Excel的方法,其特征在于,所述的方法包括快速创建大标题、快速创建信息-用户名和日期、快速创建小标题、快速创建数据列表且快速插入图片、快速保存到文件;所述的数据列表,是数据的二维数组,允许设置上方空白行数和左侧空白列数,利用合并算法将空的单元格进行合并;具体步骤是:获取所有单元格的数据,作为二维数组;定义起点坐标数组和终点坐标数组,起点坐标相当于合并矩形的左上角,终点坐标相当于合并矩形的右下角,根据这两个坐标,可以进行最后的单元格合并;第一个单元格即坐标为[0,0]的单元格,以及非空的单元格都是合并的起点;每一列从上到下进行遍历,当找到合并的起点时,先纵向找到连续不断的空白单元格,作为纵向合并范围,然后以纵向合并范围为出发线,向右找到空白单元格,作为横向合并范围,组成最大矩形,便将该矩形的左上角坐标存到起点坐标数组,将该矩形的右下角坐标存到终点坐标数组,矩形范围中的单元格全都标记为“已遍历”,不再进行判断;继续每一列从上到下进行遍历,直至所有单元格都被标记为“已...

【专利技术属性】
技术研发人员:梁炜平杨松季统凯
申请(专利权)人:国云科技股份有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1