动态生成Excel文件及导出的方法和系统与流程


动态生成excel文件及导出的方法和系统
技术领域
1.本发明涉及excel文件处理技术领域,具体地,涉及一种动态生成excel文件及导出的方法和系统。


背景技术:



2.目前的excel报表生成及导出,大多数采用预定义好excel模板文件的方式,通过查询数据库将查询结果映射并写入到预定义的excel模板上。该思路存在着明显的弊端:一旦需要新增数据导出字段,需要重新修改excel模板文件甚至逻辑代码,然后再重新部署系统,这种方法侵入性强,可维护性,可扩展性较差。其次,生成内容相同的excel文件每次都需要查询数据库,严重影响了程序执行效率。
3.专利文献cn112099801a(申请号:cn202011207609.8)公开了一种基于元数据驱动的excel解析方法及系统,涉及数据处理技术领域,所述方法包括:根据获取的excel模板文件,生成第一底层解析语言;根据所述底层解析语言,创建可视化操作界面,所述操作界面用于调整单元格的对象配置;获取所述操作界面调整后的单元格配置信息,生成第二底层解析语言;根据所述第二底层解析语言,导出新配置的excel文件。
4.而本文所采用的技术,不需要定义任何excel模板文件,通过维护一个excel文件内容的数据结构达到动态生成excel,并且使用缓存提升excel文件的生成效率。
5.针对上述现有技术中的缺陷,本发明要解决的技术问题体现在以下几点:
6.1)采用维护一个自定义的数据结构实现excel文件的动态生成;
7.2)将相同的数据缓存到缓存中间件redis中;
8.3)对查询sql进行拦截,当数据发生更新,删除时将缓存更新为最新数据。


技术实现要素:



9.针对现有技术中的缺陷,本发明的目的是提供一种动态生成excel文件及导出的方法和系统。
10.根据本发明提供的动态生成excel文件及导出的方法,包括:
11.步骤1:定义一个需要导出的excel文件内容的数据结构;
12.步骤2:查询需要写入excel文件的数据,并进行数据写入;
13.步骤3:设置excel文件的样式属性;
14.步骤4:下载生成的excel文件到本地。
15.优选的,所述步骤1包括:
16.步骤1.1:定义一个对象,成员变量包含excel文件的表头,以及待填充的数据,表头的数据类型为一个嵌套列表,待填充的数据数据类型为列表嵌套哈希表;
17.步骤1.2:设置该数据结构的获取成员变量值方式和设置成员变量值方式以及构造方式,构造方式用来给数据结构的成员变量声明初始化,默认值设置为空;
18.步骤1.3:初始化表头数据,将excel表头数据赋值给上述定义好的数据结构。
19.优选的,所述步骤2包括:
20.步骤2.1:系统运行时,根据查询条件到数据库查询需要写入excel的数据,并将查询结果数据和查询条件缓存到非关系型数据库redis中,每次查询先判断redis中是否存在相同的查询条件,如果存在,则直接从redis中取出缓存的查询结果,否则执行数据库查询语句,在后续相同的查询条件中通过面向切面编程技术,拦截影响查询结果的操作,当操作类型为更新数据、删除数据、插入数据时将缓存数据删除并重新赋值;
21.步骤2.2:将待写入的数据进行数据结构转换,然后给定义好的数据结构进行赋值;
22.数据结构转换过程如下:
23.步骤2.2.1:创建一个列表用于存储表头数据,创建一个列表嵌套哈希表用于存储每一行需要写入的数据;
24.步骤2.2.2:遍历步骤2.1查询结果的数据,将数据存储到步骤2.2.1创建的列表嵌套哈希表的数据结构中,遍历步骤1.3中初始化的表头数据存储到步骤2.2.1创建的列表中;
25.步骤2.3:数据映射处理,将需要写入的数据字段与表头数据字段进行映射处理;
26.数据映射处理包括以下步骤:
27.步骤2.3.1:遍历待写入的数据,创建一个列表存储数据结构转换后的结果,每次遍历数据都创建一个新的链表和哈希表实现linkedhashmap,用来存储每一行写入的数据;
28.步骤2.3.2:将遍历的数据对象存放到linkedhashmap中,映射规则为:键为每一列的表头标题,值为数据对象,将linkedhashmap添加到2.3.1创建的列表中;
29.步骤2.3.3:遍历结束,返回列表;
30.步骤2.4:使用easy excel通过文件流在内存中生成一个excel文件,将步骤2.3.3返回的列表数据写入excel文件中。
31.优选的,所述步骤3包括:
32.步骤3.1:设置excel文件的工作表名称;
33.步骤3.2:设置excel文件的单元格字体大小,字体类型,加粗标志;
34.步骤3.3:设置excel文件单元格宽度自适应。
35.优选的,所述步骤4包括:
36.步骤4.1:定义excel文件下载保存的路径;
37.步骤4.2:将生成的excel文件写入到本地文件路径,然后关闭文件流。
38.根据本发明提供的动态生成excel文件及导出的系统,包括:
39.模块m1:定义一个需要导出的excel文件内容的数据结构;
40.模块m2:查询需要写入excel文件的数据,并进行数据写入;
41.模块m3:设置excel文件的样式属性;
42.模块m4:下载生成的excel文件到本地。
43.优选的,所述模块m1包括:
44.模块m1.1:定义一个对象,成员变量包含excel文件的表头,以及待填充的数据,表头的数据类型为一个嵌套列表,待填充的数据数据类型为列表嵌套哈希表;
45.模块m1.2:设置该数据结构的获取成员变量值方式和设置成员变量值方式以及构
造方式,构造方式用来给数据结构的成员变量声明初始化,默认值设置为空;
46.模块m1.3:初始化表头数据,将excel表头数据赋值给上述定义好的数据结构。
47.优选的,所述模块m2包括:
48.模块m2.1:系统运行时,根据查询条件到数据库查询需要写入excel的数据,并将查询结果数据和查询条件缓存到非关系型数据库redis中,每次查询先判断redis中是否存在相同的查询条件,如果存在,则直接从redis中取出缓存的查询结果,否则执行数据库查询语句,在后续相同的查询条件中通过面向切面编程技术,拦截影响查询结果的操作,当操作类型为更新数据、删除数据、插入数据时将缓存数据删除并重新赋值;
49.模块m2.2:将待写入的数据进行数据结构转换,然后给定义好的数据结构进行赋值;
50.数据结构转换过程如下:
51.模块m2.2.1:创建一个列表用于存储表头数据,创建一个列表嵌套哈希表用于存储每一行需要写入的数据;
52.模块m2.2.2:遍历模块m2.1查询结果的数据,将数据存储到模块m2.2.1创建的列表嵌套哈希表的数据结构中,遍历模块m1.3中初始化的表头数据存储到模块m2.2.1创建的列表中;
53.模块m2.3:数据映射处理,将需要写入的数据字段与表头数据字段进行映射处理;
54.数据映射处理包括以下模块:
55.模块m2.3.1:遍历待写入的数据,创建一个列表存储数据结构转换后的结果,每次遍历数据都创建一个新的链表和哈希表实现linkedhashmap,用来存储每一行写入的数据;
56.模块m2.3.2:将遍历的数据对象存放到linkedhashmap中,映射规则为:键为每一列的表头标题,值为数据对象,将linkedhashmap添加到2.3.1创建的列表中;
57.模块m2.3.3:遍历结束,返回列表;
58.模块m2.4:使用easy excel通过文件流在内存中生成一个excel文件,将模块m2.3.3返回的列表数据写入excel文件中。
59.优选的,所述模块m3包括:
60.模块m3.1:设置excel文件的工作表名称;
61.模块m3.2:设置excel文件的单元格字体大小,字体类型,加粗标志;
62.模块m3.3:设置excel文件单元格宽度自适应。
63.优选的,所述模块m4包括:
64.模块m4.1:定义excel文件下载保存的路径;
65.模块m4.2:将生成的excel文件写入到本地文件路径,然后关闭文件流。
66.与现有技术相比,本发明具有如下的有益效果:
67.本发明在不影响系统正常运行的前提下,提升了报表文件的生成及导出效率;可扩展性强,通过动态维护定义的数据结构实现了动态生成excel文件。
附图说明
68.通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
69.图1为本发明的流程图。
具体实施方式
70.下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
71.实施例:
72.如图1,本发明提供了一种动态生成excel文件及导出的方法,包括如下步骤:
73.步骤1:定义一个需要导出的excel文件内容的数据结构;
74.步骤2:查询需要写入excel文件的数据,并进行数据写入;
75.步骤3:设置excel文件的样式属性;
76.步骤4:下载生成的excel文件到本地。
77.其中,步骤1包括如下步骤:
78.步骤1.1:定义一个对象,成员变量包含了excel文件的表头,以及待填充的数据。表头的数据类型为一个嵌套列表,待填充的数据数据类型为列表嵌套哈希表;
79.步骤1.2:设置该数据结构的获取成员变量值方法和设置成员变量值方法以及构造方法;通过构造方法用来给数据结构的成员变量声明初始化,默认值设置为空;
80.步骤1.3:初始化表头数据,将excel表头数据赋值给上述定义好的数据结构。
81.步骤2包括如下步骤:
82.步骤2.1:系统运行时,根据查询条件到数据库查询需要写入excel的数据,查询条件包括门店名称,日期,区域名称等。并将查询结果数据和查询条件缓存到非关系型数据库redis中,每次查询先判断redis中是否存在相同的查询条件,如果存在,则直接从redis中取出缓存的查询结果,否则执行数据库查询语句。在后续相同的查询条件中通过面向切面编程技术,拦截影响查询结果的操作,当操作类型为更新数据,删除数据,插入数据时将缓存数据删除,并重新赋值,确保查询结果的准确性。
83.步骤2.2:将待写入的数据进行数据结构转换,然后给步骤1中定义好的数据结构进行赋值;
84.数据结构转换过程如下:
85.步骤2.2.1:创建一个列表用于存储表头数据,创建一个列表嵌套哈希表用于存储每一行需要写入的数据;
86.步骤2.2.2:遍历步骤2.1查询结果的数据,将数据存储到步骤2.2.1创建的列表嵌套哈希表的数据结构中,遍历步骤1.3中初始化的表头数据存储到步骤2.2.1创建的列表中;
87.步骤2.3:数据映射处理,将需要写入的数据字段与表头数据字段进行映射处理;
88.数据映射处理包括以下步骤:
89.步骤2.3.1:遍历待写入的数据,创建一个列表存储数据结构转换后的结果,每次遍历数据都创建一个新的linkedhashmap(可以储健值类型的数据结构)用来存储每一行写入的数据;
90.步骤2.3.2:将遍历的数据对象存放到linkedhashmap中,映射规则为:键为每一列的表头标题,值为数据对象,将linkedhashmap添加到2.3.1创建的列表中;
91.步骤2.3.3:遍历结束,返回列表;
92.步骤2.4:将映射处理后的待写入数据写入并生成excel文件。
93.步骤2.4包括如下步骤:
94.步骤2.4.1:使用easy excel(一个支持操作excel文件的工具包)使用文件流在内存中生成一个excel文件,将步骤2.3.3返回的列表数据写入excel文件中;
95.步骤3包括如下步骤:
96.步骤3.1:设置excel文件的工作表名称;
97.步骤3.2:设置excel文件的单元格字体大小,字体类型,加粗标志;
98.步骤3.3:设置excel文件单元格宽度自适应。
99.步骤4包括如下步骤:
100.步骤4.1:定义excel文件下载保存的路径;
101.步骤4.2:将生成的excel文件写入到本地文件路径,然后关闭文件流。
102.根据本发明提供的动态生成excel文件及导出的系统,包括:模块m1:定义一个需要导出的excel文件内容的数据结构;模块m2:查询需要写入excel文件的数据,并进行数据写入;模块m3:设置excel文件的样式属性;模块m4:下载生成的excel文件到本地。
103.所述模块m1包括:模块m1.1:定义一个对象,成员变量包含excel文件的表头,以及待填充的数据,表头的数据类型为一个嵌套列表,待填充的数据数据类型为列表嵌套哈希表;模块m1.2:设置该数据结构的获取成员变量值方式和设置成员变量值方式以及构造方式,构造方式用来给数据结构的成员变量声明初始化,默认值设置为空;模块m1.3:初始化表头数据,将excel表头数据赋值给上述定义好的数据结构。
104.所述模块m2包括:模块m2.1:系统运行时,根据查询条件到数据库查询需要写入excel的数据,并将查询结果数据和查询条件缓存到非关系型数据库redis中,每次查询先判断redis中是否存在相同的查询条件,如果存在,则直接从redis中取出缓存的查询结果,否则执行数据库查询语句,在后续相同的查询条件中通过面向切面编程技术,拦截影响查询结果的操作,当操作类型为更新数据、删除数据、插入数据时将缓存数据删除并重新赋值;模块m2.2:将待写入的数据进行数据结构转换,然后给定义好的数据结构进行赋值;
105.数据结构转换过程如下:模块m2.2.1:创建一个列表用于存储表头数据,创建一个列表嵌套哈希表用于存储每一行需要写入的数据;模块m2.2.2:遍历模块m2.1查询结果的数据,将数据存储到模块m2.2.1创建的列表嵌套哈希表的数据结构中,遍历模块m1.3中初始化的表头数据存储到模块m2.2.1创建的列表中;模块m2.3:数据映射处理,将需要写入的数据字段与表头数据字段进行映射处理;
106.数据映射处理包括以下模块:模块m2.3.1:遍历待写入的数据,创建一个列表存储数据结构转换后的结果,每次遍历数据都创建一个新的链表和哈希表实现linkedhashmap,用来存储每一行写入的数据;模块m2.3.2:将遍历的数据对象存放到linkedhashmap中,映射规则为:键为每一列的表头标题,值为数据对象,将linkedhashmap添加到2.3.1创建的列表中;模块m2.3.3:遍历结束,返回列表;模块m2.4:使用easy excel通过文件流在内存中生成一个excel文件,将模块m2.3.3返回的列表数据写入excel文件中。
107.所述模块m3包括:模块m3.1:设置excel文件的工作表名称;模块m3.2:设置excel文件的单元格字体大小,字体类型,加粗标志;模块m3.3:设置excel文件单元格宽度自适应。所述模块m4包括:模块m4.1:定义excel文件下载保存的路径;模块m4.2:将生成的excel文件写入到本地文件路径,然后关闭文件流。
108.本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
109.以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本技术的实施例和实施例中的特征可以任意相互组合。

技术特征:


1.一种动态生成excel文件及导出的方法,其特征在于,包括:步骤1:定义一个需要导出的excel文件内容的数据结构;步骤2:查询需要写入excel文件的数据,并进行数据写入;步骤3:设置excel文件的样式属性;步骤4:下载生成的excel文件到本地。2.根据权利要求1所述的动态生成excel文件及导出的方法,其特征在于,所述步骤1包括:步骤1.1:定义一个对象,成员变量包含excel文件的表头,以及待填充的数据,表头的数据类型为一个嵌套列表,待填充的数据数据类型为列表嵌套哈希表;步骤1.2:设置该数据结构的获取成员变量值方式和设置成员变量值方式以及构造方式,构造方式用来给数据结构的成员变量声明初始化,默认值设置为空;步骤1.3:初始化表头数据,将excel表头数据赋值给上述定义好的数据结构。3.根据权利要求1所述的动态生成excel文件及导出的方法,其特征在于,所述步骤2包括:步骤2.1:系统运行时,根据查询条件到数据库查询需要写入excel的数据,并将查询结果数据和查询条件缓存到非关系型数据库redis中,每次查询先判断redis中是否存在相同的查询条件,如果存在,则直接从redis中取出缓存的查询结果,否则执行数据库查询语句,在后续相同的查询条件中通过面向切面编程技术,拦截影响查询结果的操作,当操作类型为更新数据、删除数据、插入数据时将缓存数据删除并重新赋值;步骤2.2:将待写入的数据进行数据结构转换,然后给定义好的数据结构进行赋值;数据结构转换过程如下:步骤2.2.1:创建一个列表用于存储表头数据,创建一个列表嵌套哈希表用于存储每一行需要写入的数据;步骤2.2.2:遍历步骤2.1查询结果的数据,将数据存储到步骤2.2.1创建的列表嵌套哈希表的数据结构中,遍历步骤1.3中初始化的表头数据存储到步骤2.2.1创建的列表中;步骤2.3:数据映射处理,将需要写入的数据字段与表头数据字段进行映射处理;数据映射处理包括以下步骤:步骤2.3.1:遍历待写入的数据,创建一个列表存储数据结构转换后的结果,每次遍历数据都创建一个新的链表和哈希表实现linkedhashmap,用来存储每一行写入的数据;步骤2.3.2:将遍历的数据对象存放到linkedhashmap中,映射规则为:键为每一列的表头标题,值为数据对象,将linkedhashmap添加到2.3.1创建的列表中;步骤2.3.3:遍历结束,返回列表;步骤2.4:使用easy excel通过文件流在内存中生成一个excel文件,将步骤2.3.3返回的列表数据写入excel文件中。4.根据权利要求1所述的动态生成excel文件及导出的方法,其特征在于,所述步骤3包括:步骤3.1:设置excel文件的工作表名称;步骤3.2:设置excel文件的单元格字体大小,字体类型,加粗标志;步骤3.3:设置excel文件单元格宽度自适应。
5.根据权利要求1所述的动态生成excel文件及导出的方法,其特征在于,所述步骤4包括:步骤4.1:定义excel文件下载保存的路径;步骤4.2:将生成的excel文件写入到本地文件路径,然后关闭文件流。6.一种动态生成excel文件及导出的系统,其特征在于,包括:模块m1:定义一个需要导出的excel文件内容的数据结构;模块m2:查询需要写入excel文件的数据,并进行数据写入;模块m3:设置excel文件的样式属性;模块m4:下载生成的excel文件到本地。7.根据权利要求6所述的动态生成excel文件及导出的系统,其特征在于,所述模块m1包括:模块m1.1:定义一个对象,成员变量包含excel文件的表头,以及待填充的数据,表头的数据类型为一个嵌套列表,待填充的数据数据类型为列表嵌套哈希表;模块m1.2:设置该数据结构的获取成员变量值方式和设置成员变量值方式以及构造方式,构造方式用来给数据结构的成员变量声明初始化,默认值设置为空;模块m1.3:初始化表头数据,将excel表头数据赋值给上述定义好的数据结构。8.根据权利要求6所述的动态生成excel文件及导出的系统,其特征在于,所述模块m2包括:模块m2.1:系统运行时,根据查询条件到数据库查询需要写入excel的数据,并将查询结果数据和查询条件缓存到非关系型数据库redis中,每次查询先判断redis中是否存在相同的查询条件,如果存在,则直接从redis中取出缓存的查询结果,否则执行数据库查询语句,在后续相同的查询条件中通过面向切面编程技术,拦截影响查询结果的操作,当操作类型为更新数据、删除数据、插入数据时将缓存数据删除并重新赋值;模块m2.2:将待写入的数据进行数据结构转换,然后给定义好的数据结构进行赋值;数据结构转换过程如下:模块m2.2.1:创建一个列表用于存储表头数据,创建一个列表嵌套哈希表用于存储每一行需要写入的数据;模块m2.2.2:遍历模块m2.1查询结果的数据,将数据存储到模块m2.2.1创建的列表嵌套哈希表的数据结构中,遍历模块m1.3中初始化的表头数据存储到模块m2.2.1创建的列表中;模块m2.3:数据映射处理,将需要写入的数据字段与表头数据字段进行映射处理;数据映射处理包括以下模块:模块m2.3.1:遍历待写入的数据,创建一个列表存储数据结构转换后的结果,每次遍历数据都创建一个新的链表和哈希表实现linkedhashmap,用来存储每一行写入的数据;模块m2.3.2:将遍历的数据对象存放到linkedhashmap中,映射规则为:键为每一列的表头标题,值为数据对象,将linkedhashmap添加到2.3.1创建的列表中;模块m2.3.3:遍历结束,返回列表;模块m2.4:使用easy excel通过文件流在内存中生成一个excel文件,将模块m2.3.3返回的列表数据写入excel文件中。
9.根据权利要求6所述的动态生成excel文件及导出的系统,其特征在于,所述模块m3包括:模块m3.1:设置excel文件的工作表名称;模块m3.2:设置excel文件的单元格字体大小,字体类型,加粗标志;模块m3.3:设置excel文件单元格宽度自适应。10.根据权利要求6所述的动态生成excel文件及导出的系统,其特征在于,所述模块m4包括:模块m4.1:定义excel文件下载保存的路径;模块m4.2:将生成的excel文件写入到本地文件路径,然后关闭文件流。

技术总结


本发明提供了一种动态生成Excel文件及导出的方法和系统,包括:步骤1:定义一个需要导出的Excel文件内容的数据结构;步骤2:查询需要写入Excel文件的数据,并进行数据写入;步骤3:设置Excel文件的样式属性;步骤4:下载生成的Excel文件到本地。本发明在不影响系统正常运行的前提下,提升了报表文件的生成及导出效率;可扩展性强,通过动态维护定义的数据结构实现了动态生成Excel文件。实现了动态生成Excel文件。实现了动态生成Excel文件。


技术研发人员:

黄扬 刘锦鸣

受保护的技术使用者:

兴业数字金融服务(上海)股份有限公司

技术研发日:

2022.09.30

技术公布日:

2022/12/26

本文发布于:2024-09-23 01:31:01,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/49231.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   文件   步骤   模块
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议