CN116861878A - 一种结合输出形式的自定义报表生成方法与终端 - Google Patents
一种结合输出形式的自定义报表生成方法与终端 Download PDFInfo
- Publication number
- CN116861878A CN116861878A CN202310932274.3A CN202310932274A CN116861878A CN 116861878 A CN116861878 A CN 116861878A CN 202310932274 A CN202310932274 A CN 202310932274A CN 116861878 A CN116861878 A CN 116861878A
- Authority
- CN
- China
- Prior art keywords
- output
- report
- data
- report template
- script
- 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
- 238000000034 method Methods 0.000 title claims abstract description 50
- 238000004590 computer program Methods 0.000 claims description 10
- 238000012423 maintenance Methods 0.000 abstract description 7
- 238000012545 processing Methods 0.000 description 25
- 230000006870 function Effects 0.000 description 16
- 230000009286 beneficial effect Effects 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
Classifications
-
- 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/186—Templates
-
- 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/24—Querying
- G06F16/242—Query formulation
-
- 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/24—Querying
- G06F16/248—Presentation of query results
-
- 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/174—Form filling; Merging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种自定义报表生成的方法及终端,通过定义脚本编写规则和脚本语法;根据需要输出的内容绘制对应的报表模板;按照所述脚本编写规则和脚本语法编写与所述上传的报表模板对应的脚本内容;根据接收到的查询条件查询出要输出到报表中的数据对象,并确定出对应的报表模板;解析出所述报表模板对应的脚本内容;执行所述解析出的所述报表模板对应的脚本内容,获取要输出到报表中的数据对象对应的数据源,将所述数据源填充到所述报表模板,用户和开发人员通过简单的脚本规则,编写报表模板对应的脚本内容,即可实现不同报表的数据输出,开发人员无需对每套报表模板开发一套代码,减少了工作量,易于后期的维护。
Description
本案是以申请日为2018年04月03日,申请号为201810287182.3,名称为“一种自定义报表的生成方法及终端”的发明专利为母案而进行的分案申请。
技术领域
本发明涉及数据处理领域,尤其涉及一种结合输出形式的自定义报表生成方法与终端。
背景技术
在大多数的系统中,有关涉及到表单输出的设计,大多数是使用固定模板文件输出数据,但在使用过程中用户往往想要输出自己需要的表格数据,格式不固定,有些信息用户想在表格中体现,但是模板中没有,或者有些模板中的内容用户不想显示,导致用户不能够获得想要的数据报表,如果使用模板文件输出则又需要重新定义模板,对新模板的文件输出需要开发人员重新写套对应文件输出的代码,增加开发人员的工作量,不易于后期代码维护。
因此,目前的报表生成过程中存在如下缺陷:对于开发人员在模板不能变的情况下,为满足用户需求只能为用户再创建一套模板,对新的模板需要重新写一套报表数据输出程序代码,浪费了开发人员的时间及降低了开发效率,且重写代码不利于后期的代码维护。
发明内容
本发明所要解决的技术问题是:提供一种工作量小,易于后期维护的自定义报表的生成方法及终端。
为了解决上述技术问题,本发明采用的技术方案为:
一种自定义报表生成方法,包括步骤:
S1、定义脚本编写规则和脚本语法;
S2、接收需要输出的内容,根据所述需要输出的内容绘制对应的报表模板,上传所述报表模板;
S3、按照所述脚本编写规则和脚本语法编写与所述上传的报表模板对应的脚本内容;
S4、接收设置的查询条件,根据所述查询条件查询出要输出到报表中的数据对象,并确定出对应的要输出的报表模板;
S5、根据确定出的报表模板,解析出所述报表模板对应的脚本内容;
S6、执行所述解析出的所述报表模板对应的脚本内容,获取要输出到报表中的数据对象对应的数据源,将所述数据源填充到所述报表模板。
一种结合输出形式的自定义报表生成方法,包括步骤:
S1、定义脚本编写规则和脚本语法;
S2、接收需要输出的内容,根据所述需要输出的内容绘制对应的报表模板,上传所述报表模板;
S3、按照所述脚本编写规则和脚本语法编写与所述上传的报表模板对应的脚本内容;
S4、接收设置的查询条件,根据所述查询条件查询出要输出到报表中的数据对象,并确定出对应的要输出的报表模板;
S5、根据确定出的报表模板,解析出所述报表模板对应的脚本内容;
S6、执行所述解析出的所述报表模板对应的脚本内容,获取要输出到报表中的数据对象对应的数据源,将所述数据源填充到所述报表模板;
步骤S2中所述根据所述需要输出的内容绘制对应的报表模板还包括:
设置所述报表模板的输出形式,所述报表模板的输出形式包括按行输出和按页输出,所述按页输出包括单文件输出和多文件输出;
步骤S6中所述将所述数据源填充到所述报表模板中具体包括:
S61、获取所述报表模板的输出形式,若所述报表模板的输出形式为按行输出,则执行步骤S62,若所述报表模板的输出形式为按页输出,则执行步骤S63;
S62、将所述数据源的每一条数据一行一行的插入到所述报表模板中;
S63、若所述报表模板的输出形式是单文件输出,则执行步骤S631,若所述报表模板的输出形式是多文件输出,则执行步骤S632;
S631、将所述数据源的每一条数据在同一个文件中新建对应的与所述数据源中其它条数据不同的页进行报表输出;
S632、将所述数据源的每一条数据新建对应的一个文件进行报表输出,并将数据填充到对应的单元格中;
在数据填充到单元格时,同时会将数据的长度及单元格的宽度进行对比,实现数据自动缩放显示;
在执行按页输出时,每执行一个对象的数据报表前先执行对模板页的复制,将数据填充到复制页中,完成按页的输出。
为了解决上述技术问题,本发明采用的另一种技术方案为:
一种自定义报表生成的终端,包括第一存储器、第一处理器以及存储在所述第一存储器上并可在所述第一处理器上运行的第一计算机程序,所述第一处理器执行所述第一计算机程序时实现以下步骤:
S1、定义脚本编写规则和脚本语法;
S2、接收需要输出的内容,根据所述需要输出的内容绘制对应的报表模板,上传所述报表模板;
S3、按照所述脚本编写规则和脚本语法编写与所述上传的报表模板对应的脚本内容;
S4、接收设置的查询条件,根据所述查询条件查询出要输出到报表中的数据对象,并确定出对应的要输出的报表模板;
S5、根据确定出的报表模板,解析出所述报表模板对应的脚本内容;
S6、执行所述解析出的所述报表模板对应的脚本内容,获取要输出到报表中的数据对象对应的数据源,将所述数据源填充到所述报表模板。
一种自定义报表生成的终端,包括第一存储器、第一处理器以及存储在所述第一存储器上并可在所述第一处理器上运行的第一计算机程序,所述第一处理器执行所述第一计算机程序时实现以下步骤:
S1、定义脚本编写规则和脚本语法;
S2、接收需要输出的内容,根据所述需要输出的内容绘制对应的报表模板,上传所述报表模板;
S3、按照所述脚本编写规则和脚本语法编写与所述上传的报表模板对应的脚本内容;
S4、接收设置的查询条件,根据所述查询条件查询出要输出到报表中的数据对象,并确定出对应的要输出的报表模板;
S5、根据确定出的报表模板,解析出所述报表模板对应的脚本内容;
S6、执行所述解析出的所述报表模板对应的脚本内容,获取要输出到报表中的数据对象对应的数据源,将所述数据源填充到所述报表模板;
步骤S2中所述根据所述需要输出的内容绘制对应的报表模板还包括:
设置所述报表模板的输出形式,所述报表模板的输出形式包括按行输出和按页输出,所述按页输出包括单文件输出和多文件输出;
步骤S6中所述将所述数据源填充到所述报表模板中具体包括:
S61、获取所述报表模板的输出形式,若所述报表模板的输出形式为按行输出,则执行步骤S62,若所述报表模板的输出形式为按页输出,则执行步骤S63;
S62、将所述数据源的每一条数据一行一行的插入到所述报表模板中;
S63、若所述报表模板的输出形式是单文件输出,则执行步骤S631,若所述报表模板的输出形式是多文件输出,则执行步骤S632;
S631、将所述数据源的每一条数据在同一个文件中新建对应的与所述数据源中其它条数据不同的页进行报表输出;
S632、将所述数据源的每一条数据新建对应的一个文件进行报表输出,并将数据填充到对应的单元格中;
在数据填充到单元格时,同时会将数据的长度及单元格的宽度进行对比,实现数据自动缩放显示;
在执行按页输出时,每执行一个对象的数据报表前先执行对模板页的复制,将数据填充到复制页中,完成按页的输出。
本发明的有益效果在于:自定义报表模板,按照自定义脚本编写规则和脚本语法编写报表模板对应的脚本内容,通过解析所述报表模板的脚本内容,将需要输出的内容对应的数据信息填充到所述合适的报表模板中,形成完整的报表,用户和开发人员通过简单的脚本规则,编写报表模板对应的脚本内容,即可实现不同报表的数据输出,开发人员无需对每套报表模板开发一套代码,减少了工作量,易于后期的维护。
附图说明
图1为本发明实施例的自定义报表生成的方法流程图;
图2为本发明实施例的自定义报表生成的方法具体实施方式的流程图;
图3为本发明实施例的自定义报表生成的方法的按页输出流程图;
图4为本发明实施例的自定义报表生成的终端结构示意图;
标号说明:
1、一种自定义报表生成的终端;2、存储器;3、处理器;
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
本发明最关键的构思在于:自定义报表模板,按照自定义脚本编写规则和脚本语法编写报表模板对应的脚本内容,通过解析所述报表模板的脚本内容,将需要输出的内容对应的数据信息填充到所述合适的报表模板中,形成完整的报表。
请参照图1,一种自定义报表生成的方法,包括步骤:
S1、定义脚本编写规则和脚本语法;
S2、接收需要输出的内容,根据所述需要输出的内容绘制对应的报表模板,上传所述报表模板;
S3、按照所述脚本编写规则和脚本语法编写与所述上传的报表模板对应的脚本内容;
S4、接收设置的查询条件,根据所述查询条件查询出要输出到报表中的数据对象,并确定出对应的要输出的报表模板;
S5、根据确定出的报表模板,解析出所述报表模板对应的脚本内容;
S6、执行所述解析出的所述报表模板对应的脚本内容,获取要输出到报表中的数据对象对应的数据源,将所述数据源填充到所述报表模板。
从上述描述可知,本发明的有益效果在于:自定义报表模板,按照自定义脚本编写规则和脚本语法编写报表模板对应的脚本内容,通过解析所述报表模板的脚本内容,将需要输出的内容对应的数据信息填充到所述合适的报表模板中,形成完整的报表,用户和开发人员通过简单的脚本规则,编写报表模板对应的脚本内容,即可实现不同报表的数据输出,开发人员无需对每套报表模板开发一套代码,减少了工作量,易于后期的维护。
进一步的,步骤S2中所述根据所述需要输出的内容绘制对应的报表模板还包括:
设置所述报表模板的输出形式,所述报表模板的输出形式包括按行输出和按页输出,所述按页输出包括单文件输出和多文件输出。
由上述描述可知,报表模板的输出形式包括按行输出和按页输出,所述按页输出包括单文件输出和多文件输出,使报表模板的适用性更加广泛。
进一步的,所述步骤S3中采用链式编程的方式编写与所述上传的报表模板对应的脚本内容。
由上述描述可知,链式编程的优点是整个计算的逻辑链清晰,容易理解,具有很好的扩展性,链式编程可以将一整套数据的获取,处理,填充封装为一个个函数,这样也有利于错误调试。
进一步的,步骤S3还包括:获取所有数据获取的方法文档,根据所述需要输出的内容,在所述所有数据获取的方法文档中找到与所述需要输出的内容对应的方法,编写所述脚本内容。
由上述描述可知,根据所述需要输出的内容,在所述所有数据获取的方法文档中找到与所述需要输出的内容对应的方法,能让用户更容易自定义报表,编写输出脚本内容。
进一步的,步骤S6中所述将所述数据源填充到所述报表模板中具体包括:
S61、获取所述报表模板的输出形式,若所述报表模板的输出形式为按行输出,则执行步骤S62,若所述报表模板的输出形式为按页输出,则执行步骤S63;
S62、将所述数据源的每一条数据一行一行的插入到所述报表模板中;
S63、若所述报表模板的输出形式是单文件输出,则执行步骤S631,若所述报表模板的输出形式是多文件输出,则执行步骤S632;
S631、将所述数据源的每一条数据在同一个文件中新建对应的与所述数据源中其它条数据不同的页进行报表输出;
S632、将所述数据源的每一条数据新建对应的一个文件进行报表输出。
由上述描述可知,报表模板设置不同类型的输出形式,使报表模板的适用性更加广泛,报表的输出形式保证了报表更加规范化,统一化。
请参照图4,一种自定义报表生成的终端,包括第一存储器、第一处理器以及存储在所述第一存储器上并可在所述第一处理器上运行的第一计算机程序,所述第一处理器执行所述第一计算机程序时实现以下步骤:
S1、定义脚本编写规则和脚本语法;
S2、接收需要输出的内容,根据所述需要输出的内容绘制对应的报表模板,上传所述报表模板;
S3、按照所述脚本编写规则和脚本语法编写与所述上传的报表模板对应的脚本内容;
S4、接收设置的查询条件,根据所述查询条件查询出要输出到报表中的数据对象,并确定出对应的要输出的报表模板;
S5、根据确定出的报表模板,解析出所述报表模板对应的脚本内容;
S6、执行所述解析出的所述报表模板对应的脚本内容,获取要输出到报表中的数据对象对应的数据源,将所述数据源填充到所述报表模板。
从上述描述可知,本发明的有益效果在于:自定义报表模板,按照自定义脚本编写规则和脚本语法编写报表模板对应的脚本内容,通过解析所述报表模板的脚本内容,将需要输出的内容对应的数据信息填充到所述合适的报表模板中,形成完整的报表,用户和开发人员通过简单的脚本规则,编写报表模板对应的脚本内容,即可实现不同报表的数据输出,开发人员无需对每套报表模板开发一套代码,减少了工作量,易于后期的维护。
进一步的,步骤S2中所述根据所述需要输出的内容绘制对应的报表模板还包括:
设置所述报表模板的输出形式,所述报表模板的输出形式包括按行输出和按页输出,所述按页输出包括单文件输出和多文件输出。
由上述描述可知,报表模板的输出形式包括按行输出和按页输出,所述按页输出包括单文件输出和多文件输出,使报表模板的适用性更加广泛。
进一步的,所述步骤S3中采用链式编程的方式编写与所述上传的报表模板对应的脚本内容。
由上述描述可知,链式编程的优点是整个计算的逻辑链清晰,容易理解,具有很好的扩展性,链式编程可以将一整套数据的获取,处理,填充封装为一个个函数,这样也有利于错误调试。
进一步的,步骤S3还包括:获取所有数据获取的方法文档,根据所述需要输出的内容,在所述所有数据获取的方法文档中找到与所述需要输出的内容对应的方法,编写所述脚本内容。
由上述描述可知,根据所述需要输出的内容,在所述所有数据获取的方法文档中找到与所述需要输出的内容对应的方法,能让用户更容易自定义报表,编写输出脚本内容。
进一步的,步骤S6中所述将所述数据源填充到所述报表模板中具体包括:
S61、获取所述报表模板的输出形式,若所述报表模板的输出形式为按行输出,则执行步骤S62,若所述报表模板的输出形式为按页输出,则执行步骤S63;
S62、将所述数据源的每一条数据一行一行的插入到所述报表模板中;
S63、若所述报表模板的输出形式是单文件输出,则执行步骤S631,若所述报表模板的输出形式是多文件输出,则执行步骤S632;
S631、将所述数据源的每一条数据在同一个文件中新建对应的与所述数据源中其它条数据不同的页进行报表输出;
S632、将所述数据源的每一条数据新建对应的一个文件进行报表输出。
由上述描述可知,报表模板设置不同类型的输出形式,使报表模板的适用性更加广泛,报表的输出形式保证了报表更加规范化,统一化。
请参照图2,本发明的实施例一为:
一种自定义报表生成方法,包括步骤:
S1、定义脚本编写规则和脚本语法;
脚本编写采用脚本链式编程的方式进行脚本编写,将多个操作通过‘.’链接在一起成为一句代码,使代码简单易读,书写方便。
链式编码还有许多语法规则,例如:
基本语法规则一,格式为:Target>cds
如:$变量1>cds.sql("Select Field1,Field2,Field3 From Table Where Id=${$编号}")。
该语法只允许单行描述,不允许跨行,其中,“>”作为分割符;“cds”是“chain dataset”链式数据集的简称,通常是对数据进行一连串操作,其中cds中对数据处理的方法进行划分为:获取数据、数据加工、赋值;该语法结尾不允许增加“;”为结束符;
“Target”是数据存放的位置,一般为变量或单元格索引,Target为单元格索引时的书写规则为“列行”,坐标格式如:B2;Target为变量,如$name;变量名必须以$符号为开头。
基本语法规则二,格式为:
>>语法块
如:>>if(context.isMulFile())cds.setFileName($A0101);
“>>”作为该语法标识符,该语法允许跨行描述,主要进行简单的数据处理等非直接赋值单元格操作。
S2、接收需要输出的内容,根据所述需要输出的内容绘制对应的报表模板,上传所述报表模板;
所述报表模板包含报表名称、报表输出项等格式;
所述根据所述需要输出的内容绘制对应的报表模板还包括:
设置所述报表模板的输出形式,所述报表模板的输出形式包括按行输出和按页输出,所述按页输出包括单文件输出和多文件输出,通过报表模板的管理,用户可以选择自己需要输出的报表。
S3、按照所述脚本编写规则和脚本语法编写与所述上传的报表模板对应的脚本内容;
所述步骤S3中采用链式编程的方式编写与所述上传的报表模板对应的脚本内容;
步骤S3还包括:获取所有数据获取的方法文档,根据所述需要输出的内容,在所述所有数据获取的方法文档中找到与所述需要输出的内容对应的方法,编写所述脚本内容;
链式中的函数封装了数据处理,用户只要对照提供的文档,根据自己需要的输出的数据在文档中找到相关方法,理解链式中每个函数的输入及输出的意义就能理解整条链式语法,将获取数据,处理数据,填写数据,数据格式处理等类型封装成链式函数,若有些最终内容的展现过于频繁或者整个数据链处理会过于复杂,导致整个逻辑链过长且不利于浏览及理解,则会将它封装一个独立数据处理函数;
用户在使用链式编程的过程中可以根据需求逐步完善字符串,集合,字典等类型所需的数据处理函数;所述报表模板还允许使用简单的java语法进行数据处理,为专业的开发人员提供更加强大的数据处理功能,以及当链式编程的函数还未完善时,提供临时性的处理方案;
用户可以更加灵活的设置自己的模板文件,对要输出项可以任意的在模板文件中调整其显示的位置,对报表的输出排版更做的灵活多样,同时开发人员也不需要因用户的模板调整而进行相关代码的调整,使整个报表输出非常的便利;
S4、接收设置的查询条件,根据所述查询条件查询出要输出到报表中的数据对象,并确定出对应的要输出的报表模板;
S5、根据确定出的报表模板,解析出所述报表模板对应的脚本内容;
采用一种脚本解析器,脚本解析器支持对象式的脚本语言特性,亦可嵌入到JAVA源代码中,能动态执行JAVA源代码并为其扩展了脚本语言的一些特性,解析出对应的脚本内容;
S6、执行所述解析出的所述报表模板对应的脚本内容,获取要输出到报表中的数据对象对应的数据源,将所述数据源填充到所述报表模板;
步骤S6中所述将所述数据源填充到所述报表模板中具体包括:
S61、获取所述报表模板的输出形式,若所述报表模板的输出形式为按行输出,则执行步骤S62,若所述报表模板的输出形式为按页输出,则执行步骤S63;
S62、将所述数据源的每一条数据一行一行的插入到所述报表模板对应的单元格中;
例如所述数据源的数据为:
张三,男,福州;
李四,男,厦门;
则输入到报表模板中为:
姓名 | 性别 | 籍贯 |
张三 | 男 | 福州 |
李四 | 男 | 厦门 |
S63、若所述报表模板的输出形式是单文件输出,则执行步骤S631,若所述报表模板的输出形式是多文件输出,则执行步骤S632;
S631、将所述数据源的每一条数据在同一个文件中新建对应的与所述数据源中其它条数据不同的页进行报表输出,并将数据填充到对应的单元格中;
S632、将所述数据源的每一条数据新建对应的一个文件进行报表输出,并将数据填充到对应的单元格中;
在执行按页输出时,每执行一个对象的数据报表前先执行对模板页的复制,将数据填充到复制页中,完成按页的输出;
在数据填充到单元格时,同时会将数据的长度及单元格的宽度进行对比,实现数据自动缩放显示;
由于数据源通常都包含多条数据,可以采用循环的方式来依次对数据源中的每条数据执行按页输出的操作,具体地,如图3所示,每执行完一条数据的输出后,判断所述数据源是否输出完成,若是,则完成报表输出,保存文件,若否,则获取所述数据源中未完成输出的数据中的一条数据,并返回开始步骤,针对所述数据执行后续的按页输出的操作。
请参照图4,本发明的实施例三为:
一种自定义报表生成的终端1,包括第一存储器2、第一处理器3以及存储在所述第一存储器2上并可在所述第一处理器3上运行的第一计算机程序,所述第一处理器3执行所述第一计算机程序时实现以下步骤:
S1、定义脚本编写规则和脚本语法;
脚本编写采用脚本链式编程的方式进行脚本编写,将多个操作通过‘.’链接在一起成为一句代码,使代码简单易读,书写方便。
链式编码还有许多语法规则,例如:
基本语法规则一,格式为:Target>cds
如:$变量1>cds.sql("Select Field1,Field2,Field3 From Table Where Id=${$编号}")。
该语法只允许单行描述,不允许跨行,其中,“>”作为分割符;“cds”是“chain dataset”链式数据集的简称,通常是对数据进行一连串操作,其中cds中对数据处理的方法进行划分为:获取数据、数据加工、赋值;该语法结尾不允许增加“;”为结束符;
“Target”是数据存放的位置,一般为变量或单元格索引,Target为单元格索引时的书写规则为“列行”,坐标格式如:B2;Target为变量,如$name;变量名必须以$符号为开头。
基本语法规则二,格式为:
>>语法块
如:>>if(context.isMulFile())cds.setFileName($A0101);
“>>”作为该语法标识符,该语法允许跨行描述,主要进行简单的数据处理等非直接赋值单元格操作。
S2、接收需要输出的内容,根据所述需要输出的内容绘制对应的报表模板,上传所述报表模板;
所述根据所述需要输出的内容绘制对应的报表模板还包括:
所述报表模板包括报表名称、报表输出项等格式;
设置所述报表模板的输出形式,所述报表模板的输出形式包括按行输出和按页输出,所述按页输出包括单文件输出和多文件输出,通过报表模板的管理,用户可以选择自己需要输出的报表。
S3、按照所述脚本编写规则和脚本语法编写与所述上传的报表模板对应的脚本内容;
所述步骤S3中采用链式编程的方式编写与所述上传的报表模板对应的脚本内容;
步骤S3还包括:获取所有数据获取的方法文档,根据所述需要输出的内容,在所述所有数据获取的方法文档中找到与所述需要输出的内容对应的方法,编写所述脚本内容;
链式中的函数封装了数据处理,用户只要对照提供的文档,根据自己需要的输出的数据在文档中找到相关方法,理解链式中每个函数的输入及输出的意义就能理解整条链式语法,将获取数据,处理数据,填写数据,数据格式处理等类型封装成链式函数,若有些最终内容的展现过于频繁或者整个数据链处理会过于复杂,导致整个逻辑链过长且不利于浏览及理解,则会将它封装一个独立数据处理函数;
用户在使用链式编程的过程中可以根据需求逐步完善字符串,集合,字典等类型所需的数据处理函数;所述报表模板还允许使用简单的java语法进行数据处理,为专业的开发人员提供更加强大的数据处理功能,以及当链式编程的函数还未完善时,提供临时性的处理方案;
用户可以更加灵活的设置自己的模板文件,对要输出项可以任意的在模板文件中调整其显示的位置,对报表的输出排版更做的灵活多样,同时开发人员也不需要因用户的模板调整而进行相关代码的调整,使整个报表输出非常的便利;
S4、接收设置的查询条件,根据所述查询条件查询出要输出到报表中的数据对象,并确定出对应的要输出的报表模板;
S5、根据确定出的报表模板,解析出所述报表模板对应的脚本内容;
采用一种脚本解析器,脚本解析器支持对象式的脚本语言特性,亦可嵌入到JAVA源代码中,能动态执行JAVA源代码并为其扩展了脚本语言的一些特性,解析出对应的脚本内容;
S6、执行所述解析出的所述报表模板对应的脚本内容,获取要输出到报表中的数据对象对应的数据源,将所述数据源填充到所述报表模板;
步骤S6中所述将所述数据源填充到所述报表模板中具体包括:
S61、获取所述报表模板的输出形式,若所述报表模板的输出形式为按行输出,则执行步骤S62,若所述报表模板的输出形式为按页输出,则执行步骤S63;
S62、将所述数据源的每一条数据一行一行的插入到所述报表模板对应的单元格中;
例如所述数据源的数据为:
张三,男,福州;
李四,男,厦门;
则输入到报表模板中为:
姓名 | 性别 | 籍贯 |
张三 | 男 | 福州 |
李四 | 男 | 厦门 |
S63、若所述报表模板的输出形式是单文件输出,则执行步骤S631,若所述报表模板的输出形式是多文件输出,则执行步骤S632;
S631、将所述数据源的每一条数据在同一个文件中新建对应的与所述数据源中其它条数据不同的页进行报表输出,并将数据填充到对应的单元格中;
S632、将所述数据源的每一条数据新建对应的一个文件进行报表输出,并将数据填充到对应的单元格中;
在数据填充到单元格时,同时会将数据的长度及单元格的宽度进行对比,实现数据自动缩放显示;
在执行按页输出时,每执行一个对象的数据报表前先执行对模板页的复制,将数据填充到复制页中,完成按页的输出;
由于数据源通常都包含多条数据,可以采用循环的方式来依次对数据源中的每条数据执行按页输出的操作,具体地,如图3所示,每执行完一条数据的输出后,判断所述数据源是否输出完成,若是,则完成报表输出,保存文件,若否,则获取所述数据源中未完成输出的数据中的一条数据,并返回开始步骤,针对所述数据执行后续的按页输出的操作。
综上所述,本发明提供的一种自定义报表生成的方法及终端,按照链式编程的方式编写报表模板对应的脚本内容,通过解析所述报表模板的脚本内容,获取所述报表模板的输出形式,将需要输出的内容对应的数据信息填充到所述合适的报表模板中,形成完整的报表,用户和开发人员通过简单的脚本规则,编写报表模板对应的脚本内容,即可实现不同报表的数据输出,开发人员无需对每套报表模板开发一套代码,减少了工作量,易于后期的维护。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (8)
1.一种结合输出形式的自定义报表生成方法,其特征在于,包括步骤:
S1、定义脚本编写规则和脚本语法;
S2、接收需要输出的内容,根据所述需要输出的内容绘制对应的报表模板,上传所述报表模板;
S3、按照所述脚本编写规则和脚本语法编写与所述上传的报表模板对应的脚本内容;
S4、接收设置的查询条件,根据所述查询条件查询出要输出到报表中的数据对象,并确定出对应的要输出的报表模板;
S5、根据确定出的报表模板,解析出所述报表模板对应的脚本内容;
S6、执行所述解析出的所述报表模板对应的脚本内容,获取要输出到报表中的数据对象对应的数据源,将所述数据源填充到所述报表模板;
步骤S2中所述根据所述需要输出的内容绘制对应的报表模板还包括:
设置所述报表模板的输出形式,所述报表模板的输出形式包括按行输出和按页输出,所述按页输出包括单文件输出和多文件输出;
步骤S6中所述将所述数据源填充到所述报表模板中具体包括:
S61、获取所述报表模板的输出形式,若所述报表模板的输出形式为按行输出,则执行步骤S62,若所述报表模板的输出形式为按页输出,则执行步骤S63;
S62、将所述数据源的每一条数据一行一行的插入到所述报表模板中;
S63、若所述报表模板的输出形式是单文件输出,则执行步骤S631,若所述报表模板的输出形式是多文件输出,则执行步骤S632;
S631、将所述数据源的每一条数据在同一个文件中新建对应的与所述数据源中其它条数据不同的页进行报表输出;
S632、将所述数据源的每一条数据新建对应的一个文件进行报表输出,并将数据填充到对应的单元格中;
在数据填充到单元格时,同时会将数据的长度及单元格的宽度进行对比,实现数据自动缩放显示;
在执行按页输出时,每执行一个对象的数据报表前先执行对模板页的复制,将数据填充到复制页中,完成按页的输出。
2.根据权利要求1所述的一种自定义报表生成方法,其特征在于,所述步骤S3中采用链式编程的方式编写与所述上传的报表模板对应的脚本内容。
3.根据权利要求2所述的一种自定义报表生成方法,其特征在于,所述链式编程包括基本语法规则一和基本语法规则二;
所述基本语法规则一具体是:
Target>cds;
其中,“>”作为分割符,“cds”是链式数据集,“Target”是数据存放的位置;
所述基本语法规则二具体是:
>>语法块;
其中,“>>”作为该语法标识符。
4.根据权利要求1所述的一种自定义报表生成方法,其特征在于,步骤S3还包括步骤:
获取所有数据获取的方法文档,根据所述需要输出的内容,在所述所有数据获取的方法文档中找到与所述需要输出的内容对应的方法,编写所述脚本内容。
5.一种自定义报表生成的终端,包括第一存储器、第一处理器以及存储在所述第一存储器上并可在所述第一处理器上运行的第一计算机程序,其特征在于,所述第一处理器执行所述第一计算机程序时实现以下步骤:
S1、定义脚本编写规则和脚本语法;
S2、接收需要输出的内容,根据所述需要输出的内容绘制对应的报表模板,上传所述报表模板;
S3、按照所述脚本编写规则和脚本语法编写与所述上传的报表模板对应的脚本内容;
S4、接收设置的查询条件,根据所述查询条件查询出要输出到报表中的数据对象,并确定出对应的要输出的报表模板;
S5、根据确定出的报表模板,解析出所述报表模板对应的脚本内容;
S6、执行所述解析出的所述报表模板对应的脚本内容,获取要输出到报表中的数据对象对应的数据源,将所述数据源填充到所述报表模板;
步骤S2中所述根据所述需要输出的内容绘制对应的报表模板还包括:
设置所述报表模板的输出形式,所述报表模板的输出形式包括按行输出和按页输出,所述按页输出包括单文件输出和多文件输出;
步骤S6中所述将所述数据源填充到所述报表模板中具体包括:
S61、获取所述报表模板的输出形式,若所述报表模板的输出形式为按行输出,则执行步骤S62,若所述报表模板的输出形式为按页输出,则执行步骤S63;
S62、将所述数据源的每一条数据一行一行的插入到所述报表模板中;
S63、若所述报表模板的输出形式是单文件输出,则执行步骤S631,若所述报表模板的输出形式是多文件输出,则执行步骤S632;
S631、将所述数据源的每一条数据在同一个文件中新建对应的与所述数据源中其它条数据不同的页进行报表输出;
S632、将所述数据源的每一条数据新建对应的一个文件进行报表输出,并将数据填充到对应的单元格中;
在数据填充到单元格时,同时会将数据的长度及单元格的宽度进行对比,实现数据自动缩放显示;
在执行按页输出时,每执行一个对象的数据报表前先执行对模板页的复制,将数据填充到复制页中,完成按页的输出。
6.根据权利要求5所述的一种自定义报表生成的终端,其特征在于,所述步骤S3中采用链式编程的方式编写与所述上传的报表模板对应的脚本内容。
7.根据权利要求6所述的一种自定义报表生成的终端,其特征在于,所述链式编程包括基本语法规则一和基本语法规则二;
所述基本语法规则一具体是:
Target>cds;
其中,“>”作为分割符,“cds”是链式数据集,“Target”是数据存放的位置;
所述基本语法规则二具体是:
>>语法块;
其中,“>>”作为该语法标识符。
8.根据权利要求5所述的一种自定义报表生成的终端,其特征在于,步骤S3还包括步骤:
获取所有数据获取的方法文档,根据所述需要输出的内容,在所述所有数据获取的方法文档中找到与所述需要输出的内容对应的方法,编写所述脚本内容。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310932274.3A CN116861878A (zh) | 2018-04-03 | 2018-04-03 | 一种结合输出形式的自定义报表生成方法与终端 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310932274.3A CN116861878A (zh) | 2018-04-03 | 2018-04-03 | 一种结合输出形式的自定义报表生成方法与终端 |
CN201810287182.3A CN108536660B (zh) | 2018-04-03 | 2018-04-03 | 一种自定义报表的生成方法及终端 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810287182.3A Division CN108536660B (zh) | 2018-04-03 | 2018-04-03 | 一种自定义报表的生成方法及终端 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116861878A true CN116861878A (zh) | 2023-10-10 |
Family
ID=63482932
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810287182.3A Active CN108536660B (zh) | 2018-04-03 | 2018-04-03 | 一种自定义报表的生成方法及终端 |
CN202310932274.3A Pending CN116861878A (zh) | 2018-04-03 | 2018-04-03 | 一种结合输出形式的自定义报表生成方法与终端 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810287182.3A Active CN108536660B (zh) | 2018-04-03 | 2018-04-03 | 一种自定义报表的生成方法及终端 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN108536660B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109379245A (zh) * | 2018-09-21 | 2019-02-22 | 成都西加云杉科技有限公司 | 一种wifi报表生成方法及系统 |
CN111104784B (zh) * | 2019-12-19 | 2024-03-12 | 金蝶软件(中国)有限公司 | 一种数据整合方法以及相关装置 |
CN111221884A (zh) * | 2019-12-31 | 2020-06-02 | 上海上实龙创智慧能源科技股份有限公司 | 一种基于Vue.js框架的报表配置及显示的方法和装置 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101650712A (zh) * | 2009-08-18 | 2010-02-17 | 深圳市科陆电子科技股份有限公司 | 一种自定义报表的生成管理方法及系统 |
CN101661460B (zh) * | 2009-09-18 | 2014-09-03 | 上海宝信软件股份有限公司 | 管理系统报表生成方法和装置 |
CN101706722A (zh) * | 2009-12-01 | 2010-05-12 | 山东中创软件工程股份有限公司 | 一种生成报表的方法及系统 |
CN102156645B (zh) * | 2011-05-20 | 2013-06-05 | 北京邮电大学 | 一种报表生成系统及方法 |
CN102436498B (zh) * | 2011-11-14 | 2014-07-23 | 深圳市华力特电气股份有限公司 | 一种报表生成方法以及相关装置 |
RU2536390C2 (ru) * | 2012-10-31 | 2014-12-20 | Общество с ограниченной ответственностью "1С" | Способ для автоматизированного создания отчетов |
CN103020158B (zh) * | 2012-11-26 | 2016-09-07 | 中兴通讯股份有限公司 | 一种报表创建方法、装置和系统 |
CN103823793B (zh) * | 2014-03-05 | 2016-09-14 | 成都交大光芒科技股份有限公司 | 基于Excel模板的动态报表实现方法 |
CN105868198A (zh) * | 2015-01-21 | 2016-08-17 | 上海东浦数据服务有限公司 | 一种服务器端工业数据报表生成方法 |
CN105868196A (zh) * | 2015-01-21 | 2016-08-17 | 张家口沪东电子科技有限公司 | 一种服务器端工业数据报表生成方法 |
CN106469140A (zh) * | 2015-08-17 | 2017-03-01 | 朗新科技股份有限公司 | 一种报表生成系统及其方法 |
CN105468571B (zh) * | 2015-11-19 | 2019-04-23 | 中国地质大学(武汉) | 一种用于自动生成报告的方法及装置 |
CN106648662B (zh) * | 2016-12-23 | 2020-02-21 | 江西博微新技术有限公司 | 基于工程造价计算描述语言bcl的报表生成装置及生成方法 |
-
2018
- 2018-04-03 CN CN201810287182.3A patent/CN108536660B/zh active Active
- 2018-04-03 CN CN202310932274.3A patent/CN116861878A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
CN108536660A (zh) | 2018-09-14 |
CN108536660B (zh) | 2023-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108874924B (zh) | 搜索服务的创建方法、装置及计算机可读存储介质 | |
CN108536660B (zh) | 一种自定义报表的生成方法及终端 | |
CN108762743B (zh) | 一种数据表操作代码生成方法及装置 | |
CN113076096B (zh) | 一种桌面应用程序开发方法、装置、设备及存储介质 | |
CN106951231B (zh) | 一种计算机软件开发方法及装置 | |
CN105164641A (zh) | 扩展开发环境 | |
WO2021051501A1 (zh) | Sql提取方法、装置、计算机设备和存储介质 | |
WO2023087720A1 (zh) | 小程序生成方法、装置、设备及存储介质 | |
CN115729938A (zh) | 一种基于DataX的数据快速上传引擎实现方法 | |
CN114625792A (zh) | 数据库查询结果导出方法和导出装置 | |
CN113138755A (zh) | 一种json序列化和反序列化的优化方法及系统 | |
CN116166904A (zh) | 一种web页报表生成方法、装置、设备和介质 | |
CN114816364A (zh) | 基于Swagger动态生成范本文件的方法、装置及应用 | |
KR100417655B1 (ko) | 최적화과정을참조하면서동작검증을행하도록디버그정보를생성하는디버그정보생성장치및프로그래머가최적화과정을의식하면서동작검증을할수있는디버그장치로이루어지는프로그램개발시스템 | |
CN108845857A (zh) | 一种基于云平台的图标管理方法和装置 | |
CN113010550A (zh) | 结构化数据的批处理对象生成、批处理方法和装置 | |
CN112181398A (zh) | 配置文件处理装置、方法及存储介质 | |
CN112130841B (zh) | Sql开发方法、装置及终端设备 | |
CN115828866A (zh) | 一种Excel数据导入及导出方法及装置 | |
CN116661794B (zh) | 一种硬件描述语言语义转换方法及装置 | |
CN113887186B (zh) | 一种电子病历内置脚本生成方法与执行方法 | |
CN110162307B (zh) | 一种将json文件转换为dll文件的方法及装置 | |
CN113296763B (zh) | 一种应用能力管理方法及系统 | |
Sah | TC: an efficient implementation of the Tcl language. | |
CN118692469A (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 |