CN114186958A - 将列表数据导出为电子表格的方法、计算设备及存储介质 - Google Patents
将列表数据导出为电子表格的方法、计算设备及存储介质 Download PDFInfo
- Publication number
- CN114186958A CN114186958A CN202111406215.XA CN202111406215A CN114186958A CN 114186958 A CN114186958 A CN 114186958A CN 202111406215 A CN202111406215 A CN 202111406215A CN 114186958 A CN114186958 A CN 114186958A
- Authority
- CN
- China
- Prior art keywords
- data
- class
- list data
- conversion
- network request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/103—Workflow collaboration or project management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/177—Editing, e.g. inserting or deleting of tables; using ruled lines
- G06F40/18—Editing, e.g. inserting or deleting of tables; using ruled lines of spreadsheets
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Human Resources & Organizations (AREA)
- Strategic Management (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Entrepreneurship & Innovation (AREA)
- Tourism & Hospitality (AREA)
- General Business, Economics & Management (AREA)
- Quality & Reliability (AREA)
- Operations Research (AREA)
- Marketing (AREA)
- Economics (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种将列表数据导出为电子表格的方法、计算设备及存储介质。所述方法在第一服务器中执行,包括:接收到客户端发送的网络请求时,将网络请求转发到网关服务器,以便网关服务器从第二服务器中获取网络请求对应的目标列表数据后,将目标列表数据发送到第一服务器;当网络请求中包含预定参数名时,获取该预定参数名对应的参数值,所述参数值表示针对目标列表数据的转换规则类;解析转换规则类所包括的类注解和字段注解,以获取电子表格的文件名以及将目标列表数据的各字段数据转换为电子表格的列数据的转换规则;根据转换规则将目标列表数据的各字段数据转换为电子表格的列数据,并生成以所述文件名命名的电子表格后返回给客户端。
Description
技术领域
本发明涉及计算机和互联网领域,具体涉及一种将列表数据导出为电子表格的方法、计算设备及存储介质。
背景技术
在Java Web项目中,用户通过浏览器或者APP打开一个页面,页面中若包括列表数据,除了对该列表数据在页面中展示之外,有时也存在将该列表数据进行导出的需求。通常,会将列表数据导出为电子表格,例如Excel文档。
将列表数据保存为Excel文档的实现方式为:在controller(MVC框架中控制器)中写一个导出方法(即导出函数)来接收导出Excel的参数,在该方法中调用导出数据的接口来获取导出的数据,并在该方法中写入导出数据各字段所对应的Excel列名以及Excel的文件名,最后生成并输出Excel文档。
当一个项目有很多不同的导出Excel功能(多个页面中也多个不同的列表数据)时,对于每个列表数据,都需要在controller中新写一个导出方法,在导出方法中实现获取导出数据的接口调用代码,并将导出数据解析为Excel列数据,实现方式不具有统一标准,容易造成多人开发每个导出任务的实现代码写法不一,开发工作量大,且导致后期维护成本增加。而且,当导出遇到数据不对的问题时,现有的实现方式只能通过代码调试或者在日志中打印出所获得的数据来查看接口返回的原始数据。
因此,如何提供一种开发效率高的列表数据导出方案,就成为亟待解决的技术问题。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的将列表数据导出为电子表格的方法、计算设备及存储介质。
根据本发明的一个方面,提供一种将列表数据导出为电子表格的方法,在第一服务器中执行,所述第一服务器与客户端以及网关服务器连接,所述网关服务器与多个第二服务器连接,所述方法包括:
接收到客户端发送的网络请求时,将所述网络请求转发到网关服务器,以便网关服务器从第二服务器中获取所述网络请求对应的目标列表数据后,将目标列表数据发送到第一服务器;
当所述网络请求中包含预定参数名时,获取该预定参数名对应的参数值,所述参数值表示针对目标列表数据的转换规则类;
解析所述转换规则类所包括的类注解,以获取电子表格的文件名,以及,解析所述转换规则类所包括的字段注解,以获取将目标列表数据的各字段数据转换为电子表格的列数据的转换规则;
根据所述转换规则将目标列表数据的各字段数据转换为电子表格的列数据,并生成以所述文件名命名的电子表格后返回给客户端。
可选地,根据本发明的将列表数据导出为电子表格的方法,其中,所述网关服务器判断所述网络请求中是否保护预定关键字,若是,则从所述网络请求中解析出接口别名对应的实际接口地址,并将所述网络请求路由到与所述实际接口地址所对应的第二服务器,以获取目标列表数据。
可选地,根据本发明的将列表数据导出为电子表格的方法,还包括:当所述网络请求中不包含预定参数名时,直接将目标列表数据返回给客户端,以便客户端对该目标列表数据进行展示。
可选地,根据本发明的将列表数据导出为电子表格的方法,其中,所述转换规则包括:列表数据的字段名对应的电子表格的列名,以及电子表格的列数据的转换格式。
可选地,根据本发明的将列表数据导出为电子表格的方法,其中,所述转换格式包括如下的一个或多个:数据类型、宽度、顺序、默认值以及转换类。
可选地,根据本发明的将列表数据导出为电子表格的方法,其中,所述转换类包括如下的一个或多个:小数转百分比类、时间戳转时间类、金额加元转换类、数字加万转换类以及手机号加星号转换类。
可选地,根据本发明的将列表数据导出为电子表格的方法,其中,所述电子表格为Excel文档。
可选地,根据本发明的将列表数据导出为电子表格的方法,其中,所述网关服务器为Zuul微服务网关。
根据本发明的又一个方面,提供一种计算设备,包括:至少一个处理器;和存储有程序指令的存储器,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行上述方法的指令。
根据本发明的又一个方面,提供一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行上述的方法。
根据本发明实施例的将列表数据导出为电子表格的实现方案,通过定义转换规则类,并为该类添加类注解和字段注解,省去了导出接口中将后端的数据解析为Excel的代码,提升了开发效率,降低了开发成本。
进一步,查询和导出可共用一个接口,当去掉_excel关键词时访问返回的即是接口原始数据,加上_excel关键词访问即可直接生成Excel,从而无需查看日志或进行代码调试即可查看原始数据。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的将列表数据导出为电子表格的系统100的示意图;
图2示出了根据本发明一个实施例的计算设备200的示意图;
图3示出了根据本发明一个实施例的将列表数据导出为电子表格的方法300的流程图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明实施例中的相关术语适用于或者参考以下解释:
注解(Annotation):Java注解又称Java标注,是JDK5.0引入的一种注释机制。Java语言中的类、方法、变量、参数和包等都可以被标注。和Javadoc不同,Java标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java虚拟机可以保留标注内容,在运行时可以获取到标注内容。
Java反射(reflection)机制:在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。反射被视为动态语言的关键。
Zuul微服务网关:Zuul是Netflix开源的微服务网关,它可以和Eureka、Ribbon、hystrix等组件配合使用。Zuul的核心是一系列过滤器,这些过滤器完成以下功能:
1、身份认证和安全认证:识别每个资源的验证要求,并拒绝那些与要求不符的请求。
2、审查与监控:在边缘位置追踪有意义的数据和统计结果,从而带来精确的生产视图。
3、动态路由:动态地将请求路由到不同的后端集群。
4、压力测试:逐渐增加指向集群的流量,以了解性能。
5、负载分配:为每一种负载类型分配对应容量,并弃用超出限定值的请求。
6、静态响应处理:在边缘位置直接建立部分响应,避免其转发到内部集群。
7、多区域(Region)弹性:跨越AWS Region进行请求路由,旨在实现ELB(ElasticLoad Balancing,弹性负载均衡)使用的多样化,以及让系统的边缘更贴近系统的使用者。
图1是根据本发明一个实施例的将列表数据导出为电子表格的系统100的示意图。参照图1,系统100包括客户端110、第一服务器120、网关服务器130和多个第二服务器140,每个第二服务器140分别连接有数据存储装置150(例如数据库DB)。
客户端110例如为浏览器或者APP,能够向第一服务器120发出网络请求,例如为http请求,以请求网络侧的资源,例如网页中的列表数据。第一服务器120与网关服务器130通信连接,网关服务器130例如为Zuul微服务网关,第一服务器120接收到客户端110发送的网络请求后,将该网络请求转发到网关服务器130。网关服务器130与多个第二服务器140通信连接,适于对网络请求进行路由,即确定将网络请求发送到哪个第二服务器140。具体地,网关服务器130判断网络请求中是否保护预定关键字,若是,则从网络请求中解析出接口别名对应的实际接口地址,并将所述网络请求路由到与所述实际接口地址所对应的第二服务器140,以获取所请求的列表数据。在一种实现方式中,第一服务器120为前端服务器,第二服务器140为后端服务器。
每个第二服务器140分别连接有数据存储装置150(例如数据库DB),在接收到网关服务器130发送的网络请求后,基于网络请求从数据存储装置150中获取所请求的列表数据,并返回给网关服务器130,由该网关服务器130将该列表数据返回给第一服务器120。
数据存储装置150可以是关系型数据库例如MySQL、ACCESS等,也可以是非关系型数据库例如NoSQL等;可以是驻留于第二服务器140中的本地数据库,也可以作为分布式数据库例如HBase等设置于多个地理位置处,总之,数据存储装置150用于存储包括列表数据在内的资源数据,本发明对数据存储装置150的具体部署、配置情况不做限制。
第一服务器120接收到网关服务器130返回的列表数据后,会根据网络请求的参数情况,确定对列表数据的处理方式,确实是直接返回该列表数据,还是将列表数据转换为电子表格例如Excel后返回给客户端。
具体地,当所述网络请求中包含预定参数名时,获取该预定参数名对应的参数值,所述参数值表示针对目标列表数据的转换规则类,当所述网络请求中不包含预定参数名时,直接将目标列表数据返回给客户端110,以便客户端110对该目标列表数据进行展示。
这里,转换规则类是与网络请求的请求接口相关联的,该转换规则类具有类注解和字段注解。通过对类注解进行解析,可以获取电子表格的文件名,通过对字段注解进行解析,可以获取将列表数据的各字段数据转换为电子表格的列数据的转换规则。这样,第一服务器120对类注解和字段注解进行解析后,就可以根据转换规则将目标列表数据的各字段数据转换为电子表格的列数据,并生成以所述文件名命名的电子表格后返回给客户端110。这里,转换规则例如可以包括:列表数据的字段名对应的电子表格的列名,以及电子表格的列数据的转换格式。
需要说明的是,转换规则类是开发人员预先设计好的,并引入到项目的请求接口(网络接口)中的。本发明实施例中的项目为Java web项目,客户端请求的资源是Java web项目中的资源;在一种实现方式中,Java web项目部署在第一服务器、网关服务器和第二服务器中。
本发明实施例的将列表数据导出为电子表格的系统100中的第一服务器120、网关服务器130和第二服务器140,具体可以实现为图2所示的计算设备。
图2示出了根据本发明一个实施例的计算设备200的结构图。如图2所示,在基本的配置202中,计算设备200典型地包括系统存储器206和一个或者多个处理器204。存储器总线208可以用于在处理器204和系统存储器206之间的通信。
取决于期望的配置,处理器204可以是任何类型的处理,包括但不限于:微处理器(μP)、微控制器(μC)、数字信息处理器(DSP)或者它们的任何组合。处理器204可以包括诸如一级高速缓存210和二级高速缓存212之类的一个或者多个级别的高速缓存、处理器核心214和寄存器216。示例的处理器核心214可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器218可以与处理器204一起使用,或者在一些实现中,存储器控制器218可以是处理器204的一个内部部分。
取决于期望的配置,系统存储器206可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。系统存储器106可以包括操作系统220、一个或者多个应用222以及程序数据224。应用222实际上是多条程序指令,其用于指示处理器204执行相应的操作。在一些实施方式中,应用222可以布置为在操作系统上使得处理器204利用程序数据224进行操作。
计算设备200还可以包括储存设备232和储存接口总线234,储存设备232包括可移除储存器236和不可移除储存器238,可移除储存器236和不可移除储存器238均与储存接口总线234连接。
计算设备200还可以包括有助于从各种接口设备(例如,输出设备242、外设接口244和通信设备246)到基本配置202经由总线/接口控制器230的通信的接口总线240。示例的输出设备242包括图形处理单元248和音频处理单元250。它们可以被配置为有助于经由一个或者多个A/V端口252与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口244可以包括串行接口控制器254和并行接口控制器256,它们可以被配置为有助于经由一个或者多个I/O端口258和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备246可以包括网络控制器260,其可以被布置为便于经由一个或者多个通信端口264与一个或者多个其他计算设备262通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
在根据本发明的计算设备200中,应用222包括执行将列表数据导出为电子表格的方法300的多条程序指令。
图3示出了根据本发明一个实施例的将列表数据导出为电子表格的方法300的流程图。方法300适于在第一服务器中执行,第一服务器与客户端以及网关服务器连接,网关服务器与多个第二服务器连接。参照图3,方法300始于步骤S302。在步骤S302中,客户端向第一服务器发送网络请求,第一服务器将该网络请求转发到网关服务器,以便网关服务器从第二服务器中获取所述网络请求对应的目标列表数据后,将目标列表数据发送到第一服务器。
针对网络资源,例如页面中的列表数据,在客户端页面提供查看和导出两个选项,用户选择查看选项或者导出选项时,都会向第一服务器发送网络请求,区别在于,当用户选择导出选项时,网络请求中会包含预定参数名以及该参数名对应的参数值(参数名-值对),当用户选择查看选项时,网络请求中不包含该预定参数名以及相应的参数值。选择查看选项,会在客户端的页面中展示所请求的列表数据,而选择导出选项,会将列表数据导出为电子表格,例如导出为Excel文档。
这里,预定参数名(例如后文所述的_excel)对应的参数值表示针对目标列表数据的转换规则类(例如后文所述的resultMode),转换规则类具有类注解和字段注解。
网关服务器例如为Zuul微服务网关,网关服务器接收到第一服务器发送的网络请求时,判断网络请求中是否保护预定关键字(例如后文所述的/cloud),若是,则从网络请求中解析出接口别名对应的实际接口地址,并将所述网络请求路由到与所述实际接口地址所对应的第二服务器,以获取目标列表数据。
Zuul微服务网关进行路由的具体实现方式(包括接口别名以及与实际接口地址的映射),可参考相关现有技术,这里不做赘述。
在步骤S304中,第一服务器判断网络请求中是否包含预定参数名,当网络请求中包含预定参数名时,获取该预定参数名对应的参数值,所述参数值表示针对目标列表数据的转换规则类,然后进入步骤S306;当网络请求中不包含预定参数名时,直接将目标列表数据返回给客户端(不执行从步骤S306开始的步骤),以便客户端对该目标列表数据进行展示。
在步骤S306中,解析所述转换规则类所包括的类注解,以获取电子表格的文件名,以及,解析所述转换规则类所包括的字段注解,以获取将目标列表数据的各字段数据转换为电子表格的列数据的转换规则。
具体地,转换规则包括:列表数据的字段名对应的电子表格的列名,以及电子表格的列数据的转换格式。在一种实现方式中,转换格式包括如下的一个或多个:数据类型、宽度、顺序、默认值以及转换类(具体含义,可参见后文应用实例中的表格)。
在一种实现方式中,转换类包括如下的一个或多个:小数转百分比类、时间戳转时间类、金额加元转换类、数字加万转换类以及手机号加星号转换类。小数转百分比类适于将小数值转换为百分比值,金额加元转换类适于将金额数值后增加“元”,时间戳转时间类适于将时间戳转换为具体的时间,数字加万转换类适于将数字转换为以万为单位的数值,手机号加星号转换类适于将手机号中的一位或者多位转换为星号,以保护用户隐私。
在步骤S308中,根据转换规则将目标列表数据的各字段数据转换为电子表格的列数据,并生成以所述文件名命名的电子表格后返回给客户端。例如,在生成Excel文档后,重写针对网络请求的网络响应(response),即将该Excel文档写入到response,并返回给客户端。
步骤S302~S308的具体处理,可参照上文关于系统100的描述,这里不做赘述。
以下给出本发明的一个应用实例。需要说明的是,该应用实例中包含枚举注解,通过枚举注解来将枚举值转换为枚举名称,在具体实现时,也可以不包括枚举注解,即直接将枚举值而不是枚举名称写入到电子表格中.
在该应用实例中,首先,配置Zuul微服务网关,目的是可通过接口别名代理访问目标接口。在Springboot项目中配置方法举例如下:
在该应用实例中,通过Zuul网关过滤器拦截并转发网络请求,获取导出数据(即请求的列表数据)。
客户端发起的导出Excel请求例如:
http://webhost/cloud/apiname/controllerName/funcName?_excel=ResultMode
其中:
webhost:请求的web站点网址
cloud:标识该请求需要通过zuul网关路由请求
apiname:接口别名
controllerName/funcName:实际的请求接口地址
_excel=ResultMode:使用_excel来标识该请求的结果数据需要按照ResultMode的规则保存为Excel。
通过Zuul过滤器拦截request请求,判断当前请求地址是否包含/cloud关键字,包含则将当前请求路由到apiname接口别名所对应的真实接口地址去获取接口数据(例如列表数据),如上述请求实际上被路由至:
http://proxyhost/controllerName/funcName
在该应用实例中,通过response过滤器拦截并转换数据为Excel。
通过zuul网关路由请求得到的数据是否要转为excel导出是通过response过滤器拦截请求响应上下文,并判断请求URL中是否包含_excel=resultMode关键词,包含则需要将请求到的数据按照resultMode的规则转换成Excel数据,重写response输出Excel文档。
在该应用实例中,通过ResultMode解析Excel导出规则。
通常接口返回的数据的字段名是英文的,而需要生成的Excel列名是中文的。返回的数据是int类型的枚举值需要转换成对应的中文枚举名称。这些生成Excel的规则全都可以通过解析ResultMode实现。解析的方法是使用Java注解的方式实现,主要有两大注解:@ExportBean(类注解)和@ExportField(字段注解)。通过类注解解析Excel的文件名以及一些个性化解析参数如:是否启用枚举注入等,通过字段注解解析Excel列名以及格式化方法等。
注解说明:
1、导出类注解@ExportBean
字段说明:
字段名 | 字段类型 | 字段说明 | 默认值 |
name | String | 文件名 | 空字符串 |
useEnum | Boolean | 是否启用枚举注入 | False |
用法举例:
@ExportBean(name="客户意向分析-详细数据导出",useEnum=true)
2、导出字段注解@ExportField(每个字段一个注解)
字段说明:
用法举例:
@ExportField(name="日期",format="yyyy-MM-dd")、
@ExportField(name="意向标签",converter=ExportIntentionConverter.class)
假设请求http://proxyhost/controllerName/funcName接口返回的数据为:
需求是导出上述结果为如下的Excel:品牌线索目标进度.xlsx
品牌 | 合作类型 | 是否重点品牌 | 全年营收占比 |
上汽大众 | CPT | 重点 | 12.10% |
一汽-大众 | 90110 | 非重点 | 58.70% |
其中合作类型对应version字段(1:CPT,0:90110),是否重点品牌对应top20字段(1:重点,0:非重点),全年营收占比对应double类型的incomeRate值,要求转换成百分数且四舍五入保留两位小数点。
则上述数据对应的ResutMode应为:
@Setter
@Getter
@ExportBean(name="品牌线索目标进度",useEnum=true)
public class ProgressDetail{//ProgressDetail为某个接口的ResultMode的具体名称
@ExportField(name="品牌")
private String channelName;
@AutoEnumFieldName(clazz=BoVersionEnum.class,defaultDescription="-",codeIncludeZero=true)
private Integer version;
@ExportField(name="合作类型")
private String versionName;
@AutoEnumFieldName(clazz=Top20Enum.class,defaultDescription="-",codeIncludeZero=true)
private Integer top20;
@ExportField(name="是否重点品牌")
private String top20Name;
@ExportField(name="全年营收占比",converter=PercentKeep1DigitsConverter.class)
private BigDecimal incomeRate;
}
其中@ExportBean注解的name代表Excel的文件名,@ExportField中的name代表Excel的列名,在ExportField.Converter中格式化数据。通过@AutoEnumFieldName注解来将枚举值转换成枚举名称。
转换成Excel的核心逻辑代码示例如下:
上述代码中:
getFieldInfoList(clazz):获取ResultMode类中的@ExportField字段注解内容并解析成导出规则。
fieldInfo.getConverter().convertToExcelData(value):将原始值格式化后输出。
在该应用实例中,前端可直接通过JavaScript代码调用生成Excel,如:
window.open(“http://webhost/cloud/apiname/controllerName/funcName?_excel=Result Model”);
综上所述,本发明实施例提供了一种使用Zuul网关技术以及基于注解和反射技术快速实现将列表数据导出为电子表格(例如Excel文档)的方法,解决了每次导出Excel都需要繁琐的实现一遍接口调用、Excel解析等代码,以及解决了无需查看日志或代码调试即可直接通过浏览器访问获取生成Excel所对应的原始数据的问题。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、U盘、软盘、CD-ROM或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的方法。
以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的较佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的而非限制性的,本发明的范围由所附权利要求书限定。
Claims (10)
1.一种将列表数据导出为电子表格的方法,在第一服务器中执行,所述第一服务器与客户端以及网关服务器连接,所述网关服务器与多个第二服务器连接,所述方法包括:
接收到客户端发送的网络请求时,将所述网络请求转发到网关服务器,以便网关服务器从第二服务器中获取所述网络请求对应的目标列表数据后,将目标列表数据发送到第一服务器;
当所述网络请求中包含预定参数名时,获取该预定参数名对应的参数值,所述参数值表示针对目标列表数据的转换规则类;
解析所述转换规则类所包括的类注解,以获取电子表格的文件名,以及,解析所述转换规则类所包括的字段注解,以获取将目标列表数据的各字段数据转换为电子表格的列数据的转换规则;
根据所述转换规则将目标列表数据的各字段数据转换为电子表格的列数据,并生成以所述文件名命名的电子表格后返回给客户端。
2.如权利要求1所述的方法,其中,所述网关服务器判断所述网络请求中是否保护预定关键字,若是,则从所述网络请求中解析出接口别名对应的实际接口地址,并将所述网络请求路由到与所述实际接口地址所对应的第二服务器,以获取目标列表数据。
3.如权利要求1或2所述的方法,还包括:
当所述网络请求中不包含预定参数名时,直接将目标列表数据返回给客户端,以便客户端对该目标列表数据进行展示。
4.如权利要求1至3中任一项所述的方法,其中,所述转换规则包括:列表数据的字段名对应的电子表格的列名,以及电子表格的列数据的转换格式。
5.如权利要求4所述的方法,其中,所述转换格式包括如下的一个或多个:数据类型、宽度、顺序、默认值以及转换类。
6.如权利要求5所述的方法,其中,所述转换类包括如下的一个或多个:小数转百分比类、时间戳转时间类、金额加元转换类、数字加万转换类以及手机号加星号转换类。
7.如权利要求1至6中任一项所述的方法,其中,所述电子表格为Excel文档。
8.如权利要求1至6中任一项所述的方法,其中,所述网关服务器为Zuul微服务网关。
9.一种计算设备,包括:
至少一个处理器;和
存储有程序指令的存储器,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如权利要1-8中任一项所述方法的指令。
10.一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111406215.XA CN114186958A (zh) | 2021-11-24 | 2021-11-24 | 将列表数据导出为电子表格的方法、计算设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111406215.XA CN114186958A (zh) | 2021-11-24 | 2021-11-24 | 将列表数据导出为电子表格的方法、计算设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114186958A true CN114186958A (zh) | 2022-03-15 |
Family
ID=80541455
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111406215.XA Pending CN114186958A (zh) | 2021-11-24 | 2021-11-24 | 将列表数据导出为电子表格的方法、计算设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114186958A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116701517A (zh) * | 2023-07-04 | 2023-09-05 | 舟谱数据技术南京有限公司 | 一种基于切面的导出接口实现方法及装置 |
-
2021
- 2021-11-24 CN CN202111406215.XA patent/CN114186958A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116701517A (zh) * | 2023-07-04 | 2023-09-05 | 舟谱数据技术南京有限公司 | 一种基于切面的导出接口实现方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11120018B2 (en) | Spark query method and system supporting trusted computing | |
CN109271411B (zh) | 报表生成方法、装置、计算机设备及存储介质 | |
CN111488143A (zh) | 一种基于Springboot2代码自动生成装置和方法 | |
CN107862425B (zh) | 风控数据采集方法、设备、系统及可读存储介质 | |
CN103559118A (zh) | 一种基于aop与注解信息系统的安全审计方法 | |
WO2007100422A1 (en) | Edi instance based transaction set definition | |
CN106648569B (zh) | 目标序列化实现方法和装置 | |
CN110795697A (zh) | 逻辑表达式的获取方法、装置、存储介质以及电子装置 | |
CN111241180A (zh) | 一种信息处理的方法、装置、设备及存储介质 | |
CN112925523B (zh) | 对象比较方法、装置、设备及计算机可读介质 | |
US20210209596A1 (en) | Object Oriented Smart Contracts For UTXO-Based Blockchains | |
CN114186958A (zh) | 将列表数据导出为电子表格的方法、计算设备及存储介质 | |
CN116795913A (zh) | 数据导出方法、数据导入方法、数据导出导入系统 | |
CN117032646A (zh) | 指标配置方法、指标执行方法及系统 | |
CN115934537A (zh) | 接口测试工具生成方法、装置、设备、介质及产品 | |
CN112346774A (zh) | 一种应用安装包的生成方法和装置 | |
CN113672233B (zh) | 一种基于Redfish的服务器带外管理方法、装置及设备 | |
CN111767703B (zh) | 表单数据采集方法、装置和系统 | |
CN115033451A (zh) | 数据生成方法、数据处理方法、装置、电子设备及介质 | |
CN111400623B (zh) | 用于搜索信息的方法和装置 | |
CN109274758B (zh) | 一种请求消息的处理方法及计算设备 | |
CN111580799A (zh) | 领域特定语言脚本拼装方法及系统 | |
CN113900895B (zh) | 信息处理方法、信息处理装置、存储介质与电子设备 | |
EP4068141B1 (en) | Method and system to enable print functionality in high-level synthesis (hls) design platforms | |
CN109933573B (zh) | 数据库业务更新方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |