CN108536660B - 一种自定义报表的生成方法及终端 - Google Patents

一种自定义报表的生成方法及终端 Download PDF

Info

Publication number
CN108536660B
CN108536660B CN201810287182.3A CN201810287182A CN108536660B CN 108536660 B CN108536660 B CN 108536660B CN 201810287182 A CN201810287182 A CN 201810287182A CN 108536660 B CN108536660 B CN 108536660B
Authority
CN
China
Prior art keywords
output
report
report template
script
data
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.)
Active
Application number
CN201810287182.3A
Other languages
English (en)
Other versions
CN108536660A (zh
Inventor
陈世营
陈伟达
邓松高
李达取
刘震
赖志烽
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujian Rongji Software Engineering Co ltd
Original Assignee
Fujian Rongji Software Engineering Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujian Rongji Software Engineering Co ltd filed Critical Fujian Rongji Software Engineering Co ltd
Priority to CN202310932274.3A priority Critical patent/CN116861878A/zh
Priority to CN201810287182.3A priority patent/CN108536660B/zh
Publication of CN108536660A publication Critical patent/CN108536660A/zh
Application granted granted Critical
Publication of CN108536660B publication Critical patent/CN108536660B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/186Templates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/248Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/174Form filling; Merging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing

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

一种自定义报表的生成方法及终端
技术领域
本发明涉及数据处理领域,尤其涉及一种自定义报表的生成方法及终端。
背景技术
在大多数的***中,有关涉及到表单输出的设计,大多数是使用固定模板文件输出数据,但在使用过程中用户往往想要输出自己需要的表格数据,格式不固定,有些信息用户想在表格中体现,但是模板中没有,或者有些模板中的内容用户不想显示,导致用户不能够获得想要的数据报表,如果使用模板文件输出则又需要重新定义模板,对新模板的文件输出需要开发人员重新写套对应文件输出的代码,增加开发人员的工作量,不易于后期代码维护。
因此,目前的报表生成过程中存在如下缺陷:对于开发人员在模板不能变的情况下,为满足用户需求只能为用户再创建一套模板,对新的模板需要重新写一套报表数据输出程序代码,浪费了开发人员的时间及降低了开发效率,且重写代码不利于后期的代码维护。
发明内容
本发明所要解决的技术问题是:提供一种工作量小,易于后期维护的自定义报表的生成方法及终端。
为了解决上述技术问题,本发明采用的技术方案为:
一种自定义报表生成方法,包括步骤:
S1、定义脚本编写规则和脚本语法;
S2、接收需要输出的内容,根据所述需要输出的内容绘制对应的报表模板,上传所述报表模板;
S3、按照所述脚本编写规则和脚本语法编写与所述上传的报表模板对应的脚本内容;
S4、接收设置的查询条件,根据所述查询条件查询出要输出到报表中的数据对象,并确定出对应的要输出的报表模板;
S5、根据确定出的报表模板,解析出所述报表模板对应的脚本内容;
S6、执行所述解析出的所述报表模板对应的脚本内容,获取要输出到报表中的数据对象对应的数据源,将所述数据源填充到所述报表模板。
为了解决上述技术问题,本发明采用的另一种技术方案为:
一种自定义报表生成的终端,包括第一存储器、第一处理器以及存储在所述第一存储器上并可在所述第一处理器上运行的第一计算机程序,所述第一处理器执行所述第一计算机程序时实现以下步骤:
S1、定义脚本编写规则和脚本语法;
S2、接收需要输出的内容,根据所述需要输出的内容绘制对应的报表模板,上传所述报表模板;
S3、按照所述脚本编写规则和脚本语法编写与所述上传的报表模板对应的脚本内容;
S4、接收设置的查询条件,根据所述查询条件查询出要输出到报表中的数据对象,并确定出对应的要输出的报表模板;
S5、根据确定出的报表模板,解析出所述报表模板对应的脚本内容;
S6、执行所述解析出的所述报表模板对应的脚本内容,获取要输出到报表中的数据对象对应的数据源,将所述数据源填充到所述报表模板。
本发明的有益效果在于:自定义报表模板,按照自定义脚本编写规则和脚本语法编写报表模板对应的脚本内容,通过解析所述报表模板的脚本内容,将需要输出的内容对应的数据信息填充到所述合适的报表模板中,形成完整的报表,用户和开发人员通过简单的脚本规则,编写报表模板对应的脚本内容,即可实现不同报表的数据输出,开发人员无需对每套报表模板开发一套代码,减少了工作量,易于后期的维护。
附图说明
图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 (2)

1.一种自定义报表生成方法,其特征在于,包括步骤:
S1、定义脚本编写规则和脚本语法;
S2、接收需要输出的内容,根据所述需要输出的内容绘制对应的报表模板,上传所述报表模板;
S3、按照所述脚本编写规则和脚本语法编写与所述上传的报表模板对应的脚本内容;
S4、接收设置的查询条件,根据所述查询条件查询出要输出到报表中的数据对象,并确定出对应的要输出的报表模板;
S5、根据确定出的报表模板,解析出所述报表模板对应的脚本内容;
S6、执行所述解析出的所述报表模板对应的脚本内容,获取要输出到报表中的数据对象对应的数据源,将所述数据源填充到所述报表模板;
步骤S2中所述根据所述需要输出的内容绘制对应的报表模板还包括:
设置所述报表模板的输出形式,所述报表模板的输出形式包括按行输出和按页输出,所述按页输出包括单文件输出和多文件输出;
步骤S6中所述将所述数据源填充到所述报表模板中具体包括:
S61、获取所述报表模板的输出形式,若所述报表模板的输出形式为按行输出,则执行步骤S62,若所述报表模板的输出形式为按页输出,则执行步骤S63;
S62、将所述数据源的每一条数据一行一行的***到所述报表模板中;
S63、若所述报表模板的输出形式是单文件输出,则执行步骤S631,若所述报表模板的输出形式是多文件输出,则执行步骤S632;
S631、将所述数据源的每一条数据在同一个文件中新建对应的与所述数据源中其它条数据不同的页进行报表输出;
S632、将所述数据源的每一条数据新建对应的一个文件进行报表输出;
所述步骤S3中采用链式编程的方式编写与所述上传的报表模板对应的脚本内容;
所述链式编程包括基本语法规则一和基本语法规则二;
所述基本语法规则一具体是:
Target>cds;
其中,“>”作为分割符,“cds”是链式数据集,“Target”是数据存放的位置;
所述基本语法规则二具体是:
>>语法块;
其中,“>>”作为语法标识符;步骤S3还包括:获取所有数据获取的方法文档,根据所述需要输出的内容,在所述所有数据获取的方法文档中找到与所述需要输出的内容对应的方法,编写所述脚本内容。
2.一种自定义报表生成的终端,包括第一存储器、第一处理器以及存储在所述第一存储器上并可在所述第一处理器上运行的第一计算机程序,其特征在于,所述第一处理器执行所述第一计算机程序时实现以下步骤:
S1、定义脚本编写规则和脚本语法;
S2、接收需要输出的内容,根据所述需要输出的内容绘制对应的报表模板,上传所述报表模板;
S3、按照所述脚本编写规则和脚本语法编写与所述上传的报表模板对应的脚本内容;
S4、接收设置的查询条件,根据所述查询条件查询出要输出到报表中的数据对象,并确定出对应的要输出的报表模板;
S5、根据确定出的报表模板,解析出所述报表模板对应的脚本内容;
S6、执行所述解析出的所述报表模板对应的脚本内容,获取要输出到报表中的数据对象对应的数据源,将所述数据源填充到所述报表模板;
步骤S2中所述根据所述需要输出的内容绘制对应的报表模板还包括:
设置所述报表模板的输出形式,所述报表模板的输出形式包括按行输出和按页输出,所述按页输出包括单文件输出和多文件输出;
步骤S6中所述将所述数据源填充到所述报表模板中具体包括:
S61、获取所述报表模板的输出形式,若所述报表模板的输出形式为按行输出,则执行步骤S62,若所述报表模板的输出形式为按页输出,则执行步骤S63;
S62、将所述数据源的每一条数据一行一行的***到所述报表模板中;
S63、若所述报表模板的输出形式是单文件输出,则执行步骤S631,若所述报表模板的输出形式是多文件输出,则执行步骤S632;
S631、将所述数据源的每一条数据在同一个文件中新建对应的与所述数据源中其它条数据不同的页进行报表输出;
S632、将所述数据源的每一条数据新建对应的一个文件进行报表输出;
所述步骤S3中采用链式编程的方式编写与所述上传的报表模板对应的脚本内容;
所述链式编程包括基本语法规则一和基本语法规则二;
所述基本语法规则一具体是:
Target>cds;
其中,“>”作为分割符,“cds”是链式数据集,“Target”是数据存放的位置;
所述基本语法规则二具体是:
>>语法块;
其中,“>>”作为语法标识符;
步骤S3还包括:获取所有数据获取的方法文档,根据所述需要输出的内容,在所述所有数据获取的方法文档中找到与所述需要输出的内容对应的方法,编写所述脚本内容。
CN201810287182.3A 2018-04-03 2018-04-03 一种自定义报表的生成方法及终端 Active CN108536660B (zh)

Priority Applications (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 一种自定义报表的生成方法及终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810287182.3A CN108536660B (zh) 2018-04-03 2018-04-03 一种自定义报表的生成方法及终端

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202310932274.3A Division CN116861878A (zh) 2018-04-03 2018-04-03 一种结合输出形式的自定义报表生成方法与终端

Publications (2)

Publication Number Publication Date
CN108536660A CN108536660A (zh) 2018-09-14
CN108536660B true CN108536660B (zh) 2023-08-04

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 After (1)

Application Number Title Priority Date Filing Date
CN202310932274.3A Pending CN116861878A (zh) 2018-04-03 2018-04-03 一种结合输出形式的自定义报表生成方法与终端

Country Status (1)

Country Link
CN (2) CN108536660B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
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框架的报表配置及显示的方法和装置

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101650712A (zh) * 2009-08-18 2010-02-17 深圳市科陆电子科技股份有限公司 一种自定义报表的生成管理方法及***
CN101661460A (zh) * 2009-09-18 2010-03-03 上海宝信软件股份有限公司 管理***报表生成方法和装置
CN101706722A (zh) * 2009-12-01 2010-05-12 山东中创软件工程股份有限公司 一种生成报表的方法及***
CN102156645A (zh) * 2011-05-20 2011-08-17 北京邮电大学 一种报表生成***及方法
CN102436498A (zh) * 2011-11-14 2012-05-02 深圳市华力特电气股份有限公司 一种报表生成方法以及相关装置
CN103020158A (zh) * 2012-11-26 2013-04-03 中兴通讯股份有限公司 一种报表创建方法、装置和***
CN103823793A (zh) * 2014-03-05 2014-05-28 成都交大光芒科技股份有限公司 基于Excel模板的动态报表实现方法
CN105468571A (zh) * 2015-11-19 2016-04-06 中国地质大学(武汉) 一种用于自动生成报告的方法及装置
CN105868196A (zh) * 2015-01-21 2016-08-17 张家口沪东电子科技有限公司 一种服务器端工业数据报表生成方法
CN105868198A (zh) * 2015-01-21 2016-08-17 上海东浦数据服务有限公司 一种服务器端工业数据报表生成方法
CN106469140A (zh) * 2015-08-17 2017-03-01 朗新科技股份有限公司 一种报表生成***及其方法
CN106648662A (zh) * 2016-12-23 2017-05-10 江西博微新技术有限公司 基于工程造价计算描述语言bcl的报表生成装置及生成方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2536390C2 (ru) * 2012-10-31 2014-12-20 Общество с ограниченной ответственностью "1С" Способ для автоматизированного создания отчетов

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101650712A (zh) * 2009-08-18 2010-02-17 深圳市科陆电子科技股份有限公司 一种自定义报表的生成管理方法及***
CN101661460A (zh) * 2009-09-18 2010-03-03 上海宝信软件股份有限公司 管理***报表生成方法和装置
CN101706722A (zh) * 2009-12-01 2010-05-12 山东中创软件工程股份有限公司 一种生成报表的方法及***
CN102156645A (zh) * 2011-05-20 2011-08-17 北京邮电大学 一种报表生成***及方法
CN102436498A (zh) * 2011-11-14 2012-05-02 深圳市华力特电气股份有限公司 一种报表生成方法以及相关装置
CN103020158A (zh) * 2012-11-26 2013-04-03 中兴通讯股份有限公司 一种报表创建方法、装置和***
CN103823793A (zh) * 2014-03-05 2014-05-28 成都交大光芒科技股份有限公司 基于Excel模板的动态报表实现方法
CN105868196A (zh) * 2015-01-21 2016-08-17 张家口沪东电子科技有限公司 一种服务器端工业数据报表生成方法
CN105868198A (zh) * 2015-01-21 2016-08-17 上海东浦数据服务有限公司 一种服务器端工业数据报表生成方法
CN106469140A (zh) * 2015-08-17 2017-03-01 朗新科技股份有限公司 一种报表生成***及其方法
CN105468571A (zh) * 2015-11-19 2016-04-06 中国地质大学(武汉) 一种用于自动生成报告的方法及装置
CN106648662A (zh) * 2016-12-23 2017-05-10 江西博微新技术有限公司 基于工程造价计算描述语言bcl的报表生成装置及生成方法

Also Published As

Publication number Publication date
CN108536660A (zh) 2018-09-14
CN116861878A (zh) 2023-10-10

Similar Documents

Publication Publication Date Title
CN111708539B (zh) 一种应用程序代码转换方法、装置、电子设备和存储介质
CN111026777B (zh) 实体类代码生成方法、装置、计算机设备及存储介质
CN109582647B (zh) 一种面向非结构化证据文件的分析方法及***
CN108874924B (zh) 搜索服务的创建方法、装置及计算机可读存储介质
CN108536660B (zh) 一种自定义报表的生成方法及终端
CN104881275A (zh) 一种电子报表生成方法及装置
CN113076096B (zh) 一种桌面应用程序开发方法、装置、设备及存储介质
CN106951231B (zh) 一种计算机软件开发方法及装置
CN112905624B (zh) 一种低代码开发平台的数据库扩展方法及设备
CN114153459A (zh) 接口文档生成方法及装置
CN106776779B (zh) 基于Mac平台的JSON数据生成实体文件的方法
WO2023087720A1 (zh) 小程序生成方法、装置、设备及存储介质
CN113138755A (zh) 一种json序列化和反序列化的优化方法及***
CN114816364A (zh) 基于Swagger动态生成范本文件的方法、装置及应用
KR100417655B1 (ko) 최적화과정을참조하면서동작검증을행하도록디버그정보를생성하는디버그정보생성장치및프로그래머가최적화과정을의식하면서동작검증을할수있는디버그장치로이루어지는프로그램개발시스템
US8108828B2 (en) System for generating optimized computer data field conversion routines
CN112181398A (zh) 配置文件处理装置、方法及存储介质
CN112130841B (zh) Sql开发方法、装置及终端设备
CN110162307B (zh) 一种将json文件转换为dll文件的方法及装置
CN116661794B (zh) 一种硬件描述语言语义转换方法及装置
Sah TC: an efficient implementation of the Tcl language.
CN115828866A (zh) 一种Excel数据导入及导出方法及装置
CN113918664B (zh) 一种数据处理方法以及装置
CN108108429B (zh) 终端设备的数据存储方法、装置、存储介质及计算机设备
CN116627390A (zh) 航空软件开发中icd文件的替代方法及装置

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
GR01 Patent grant
GR01 Patent grant