一种EXCEL模板文件的生成方法及系统技术方案

技术编号:37323893 阅读:11 留言:0更新日期:2023-04-21 23:03
本发明专利技术涉及计算机软件技术领域,具体涉及一种EXCEL模板文件的生成方法及系统。通过对数据库中待导出的EXCEL模板配置信息,用于识别EXCEL模板中不同类型报表的识别,从所述配置信息中解析出待导出sheet的标题和单元格信息,将解析出的标题渲染到一个新建的sheet中,根据所述单元格信息,将所述EXCEL模板中每个单元格的内容渲染到所述sheet中,并将所述EXCEL模板的条件格式复制到所述sheet中。将所述sheet中具有相同字段名和内容的单元格进行合并,删除所述EXCEL模板,并将所述sheet中的数据刷进磁盘中,以备用户导出。如此,将数据库中需要导出的EXCEL模板通过配置信息,模板化的刷新到硬盘中,通过不断的模块化刷新导出数据到excel文件中,最终实现数据百万级的导出。最终实现数据百万级的导出。最终实现数据百万级的导出。

【技术实现步骤摘要】
一种EXCEL模板文件的生成方法及系统


[0001]本专利技术涉及计算机软件
,具体涉及一种EXCEL模板文件的生成方法及系统。

技术介绍

[0002]ApachePoi(Poor 0bfuscation Impl ementat io)是由Apache基金会开发的开放源码函式库,是用Java编写的免费开源的跨平台的Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能。用于操作符合微软Open XML标准以及微软0LE2复合文档格式的Java工具,是用Java编写的免费开源的跨平台的Java API,具备提供API给Java程式对MicrosoftOffice格式档案读和写的功能。POI为“Poor Obfuscation Implementation”的首字母缩写,意为“简洁版的模糊实现”。
[0003]常用的JXL,模板配置十分强大,但却存在性能问题,如:当系统需要很多表格导出时,针对报表的不同类型,如纵向报表、横向报表、隐藏列以及动态生成表头标题等,JXL在一次性导出百万级别数据并且有并发的时候,由于数据都加载在内存中,而内存短时间无法得到释放,此时若有新的请求,就会把内存撑满,导致服务宕机。

技术实现思路

[0004]有鉴于此,本专利技术的目的在于提供一种EXCEL模板文件的生成方法,以解决现有技术中针对数据库中不同类型的报表,由于内存过满,短时间无法批量导出数据而导致的服务不可用,性能低下的问题。
[0005]根据本专利技术实施例的第一方面,一种EXCEL模板文件的生成方法,包括:
[0006]对数据库中待导出的EXCEL模板配置信息;
[0007]从所述配置信息中解析出待导出sheet的标题和单元格信息;
[0008]创建新的sheet,将解析出的标题渲染到新建的sheet中;
[0009]根据所述单元格信息,将所述EXCEL模板中每个单元格的内容渲染到所述sheet中,并将所述EXCEL模板的条件格式复制到所述sheet中;
[0010]将所述sheet中具有相同字段名和内容的单元格进行合并;
[0011]删除所述EXCEL模板,并将所述sheet中的数据刷进磁盘中,以备用户导出。
[0012]进一步的,所述创建新的sheet,将解析出的标题渲染到新建的sheet中,包括:
[0013]根据解析出的标题的行索引,将所述标题渲染到新建的sheet的对应位置。
[0014]进一步的,所述单元格信息包括:表头及每个单元格的占位符,所述根据所述单元格信息,将所述EXCEL模板中每个单元格的内容渲染到所述sheet中,包括:
[0015]对于表头,若当前单元格的占位符为$,将当前单元格的内容纵向渲染到所述sheet中;若当前单元格的占位符为#,将当前单元格的内容横向渲染到所述sheet中;
[0016]对于非表头,从第一行轮询到最后一行,从第一列轮询到最后一列,根据每个单元格对应在表头中的字段名,将每个单元格的内容对应渲染到所述sheet中。
[0017]进一步的,所述根据每个单元格对应在表头中的字段名,将每个单元格的内容对应渲染到所述sheet中,包括:
[0018]若EXCEL模板中当前被轮询的单元格所对应在表头中的字段名与所述sheet中的某个单元格对应在表头中的字段名相同,将EXCEL模板中该单元格的内容渲染到所述sheet中对应的单元格中;
[0019]在将EXCEL模板中该单元格的内容渲染到所述sheet中对应的单元格中时,若该单元格的占位符为$,将该单元格的内容纵向渲染到所述sheet中;若该单元格的占位符为#,将该单元格的内容横向渲染到所述sheet中。
[0020]进一步的,所述将所述EXCEL模板的条件格式复制到所述sheet中,具体为:
[0021]根据EXCEL模板中每个单元格对应在表头中的字段名,记录每个单元格的行索引和列索引;
[0022]根据所述行索引和列索引,读取对应单元格的条件格式,并将所述条件格式复制到所述sheet的对应单元格中。
[0023]进一步的,所述将所述EXCEL模板的条件格式复制到所述sheet中包括:
[0024]所述EXCEL模板的条件格式包含隐藏格式。
[0025]根据本专利技术实施例的第二方面,一种EXCEL模板文件生成系统,包括:
[0026]配置文件获取单元,用于对数据库中待导出的EXCEL模板配置信息,从所述配置信息中解析出待导出sheet的标题和单元格信息,创建新的sheet,将解析出的标题渲染到新建的sheet中;
[0027]EXCEL文件生成单元,用于将所述sheet中具有相同字段名和内容的单元格进行合并;删除所述EXCEL模板,并将所述sheet中的数据刷进磁盘中,以备用户导出。
[0028]本专利技术的实施例提供的技术方案可以包括以下有益效果:
[0029]通过对数据库中待导出的EXCEL模板配置信息,用于识别EXCEL模板中不同类型报表的识别,从所述配置信息中解析出待导出sheet的标题和单元格信息,将解析出的标题渲染到一个新建的sheet中,根据所述单元格信息,将所述EXCEL模板中每个单元格的内容渲染到所述sheet中,并将所述EXCEL模板的条件格式复制到所述sheet中。将所述sheet中具有相同字段名和内容的单元格进行合并,删除所述EXCEL模板,并将所述sheet中的数据刷进磁盘中,以备用户导出。如此,将数据库中需要导出的EXCEL模板通过配置信息,模板化的刷新到硬盘中,通过不断的模块化刷新导出数据到excel文件中,最终实现数据百万级的导出。
[0030]应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本专利技术。
附图说明
[0031]此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本专利技术的实施例,并与说明书一起用于解释本专利技术的原理。
[0032]图1是根据一示例性实施例示出的一种EXCEL模板文件的生成方法的示意图;
[0033]图2是根据一示例性实施例示出的一种EXCEL模板文件的生成系统的示意框图。
具体实施方式
[0034]这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本专利技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本专利技术的一些方面相一致的装置和方法的例子。
[0035]参照图1,图1是一种EXCEL模板文件的生成方法的示意图,所述方法包括:
[0036]S11步骤:对数据库中待导出的EXCEL模板配置信息;
[0037]S12步骤:从所述配置信息中解析出待导出sheet的标题和单元格信息;
[0038本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种EXCEL模板文件的生成方法,其特征在于,包括:对数据库中待导出的EXCEL模板配置信息;从所述配置信息中解析出待导出sheet的标题和单元格信息;创建新的sheet,将解析出的标题渲染到新建的sheet中;根据所述单元格信息,将所述EXCEL模板中每个单元格的内容渲染到所述sheet中,并将所述EXCEL模板的条件格式复制到所述sheet中;将所述sheet中具有相同字段名和内容的单元格进行合并;删除所述EXCEL模板,并将所述sheet中的数据刷进磁盘中,以备用户导出数据。2.根据权利要求1所述的方法,其特征在于,所述创建新的sheet,将解析出的标题渲染到新建的sheet中,包括:根据解析出的标题的行索引,将所述标题渲染到新建sheet对应的位置。3.根据权利要求1所述的方法,其特征在于,所述单元格信息包括:表头及每个单元格的占位符,所述根据所述单元格信息,将所述EXCEL模板中每个单元格的内容渲染到所述sheet中,包括:对于表头,若当前单元格的占位符为$,将当前单元格的内容纵向渲染到所述sheet中;若当前单元格的占位符为#,将当前单元格的内容横向渲染到所述sheet中;对于非表头,从第一行轮询到最后一行,从第一列轮询到最后一列,根据每个单元格对应在表头中的字段名,将每个单元格的内容对应渲染到所述sheet。4.根据权利要求3所述的方法,其特征在于,所述根据每个单元格对应在表头中的字段名,将每个单元格的内容对应渲染到所述...

【专利技术属性】
技术研发人员:江思飞周壮
申请(专利权)人:上海中通吉网络技术有限公司
类型:发明
国别省市:

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

1