CN102830947A - 一种基于报表打印模板格式实现的报表打印控件 - Google Patents
一种基于报表打印模板格式实现的报表打印控件 Download PDFInfo
- Publication number
- CN102830947A CN102830947A CN2012102873022A CN201210287302A CN102830947A CN 102830947 A CN102830947 A CN 102830947A CN 2012102873022 A CN2012102873022 A CN 2012102873022A CN 201210287302 A CN201210287302 A CN 201210287302A CN 102830947 A CN102830947 A CN 102830947A
- Authority
- CN
- China
- Prior art keywords
- report
- report printing
- template
- printing
- record set
- 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
Landscapes
- Record Information Processing For Printing (AREA)
Abstract
本发明提供了一种基于报表打印模板格式实现的报表打印控件,用以实现报表模板格式与数据分离,由报表打印控件引擎将数据引入模板,并格式化出打印文件。使用本发明提供的报表打印模板与打印控件,将大大简化各种应用程序打印功能的开发,软件开发人员也能在不修改应用程序代码的基础上对报表格式进行调整。
Description
技术领域
本发明属于软件应用系统的设计与开发技术,提供一种报表打印的模板定义方法和基于该模板的控件实现,采用报表数据与显示格式分享的技术,使报表打印开发易于修改和维护。
背景技术
在当今的业务管理信息系统开发中,报表打印功能是一项重要的功能,一般来说,当开发打印程序时,软件开发者必须使用如C#等开发语言来创建打印程序,为打印功能创建专有的打印代码,并要为打印报表的排版、位置、线条和数据手动编写代码,由于各类工具创建的打印程序的底层语言是复杂的,所以软件开发者无法容易地在现在应用程序不修改的情况下对报表格式进行调整。在C/S的开发模式下,打印功能的开发不同的软件开发工具有不同的方法,基本上报表的数据与打印的格式都写在程序中,修改和维护时要调整原程序,发布时重新更新可执行文件或部件,在B/S架构的系统中,客户端浏览器的打印功能很有限,很难在浏览器中实现精确的业务表单套打,在服务器中实现PDF打印也要求客户端安装比较复杂的PDF软件。当前一些报表设计器主要采用分区设计,典型的分为header页眉区、detail明细区和footer页脚区,这种设计将报表格式划分为相对固定的区域,实现中国区的复杂报表就比较难,本发明将detail明细区的功能由记录集数据域来实现,header页眉区由显示页号属性来实现,footer页脚区由跟随对象来实现,使用报表的格式定义更自由,能更灵活地表达报表格式。
因此,需要一种新的技术方案以解决上述问题。
发明内容
针对上述现有技术所存在的问题和不足,本发明的目的是提供一种基于报表打印模板格式实现的报表打印控件,使报表打印开发易于修改和维护。
为实现上述目的,本发明基于报表打印模板格式实现的报表打印控件可采用如下技术方案:
一种基于报表打印模板格式实现的报表打印控件,用以实现报表模板格式与数据分离,由报表打印控件引擎将数据引入模板,并格式化出打印文件。
优选的,所述报表打印模板格式将报表格式设定为由纸张、字体、线条、矩形、图片、文本标签、单项数据域、表格数据域和记录集数据域组成。
优选的,该报表打印控件基于ActiveX控件技术实现,包括读取报表打印模板接口、报表数据设置接口和打印接口,读取报表打印模板接口方法名为loadTemp,报表数据设置接口方法名为putData,打印接口名为print。
优选的,提供一种报表格式对象中的linkObj属性,用于实现复杂布局的报表打印。
优选的,提供格式化引擎格式化出打印文件,所述格式化引擎,包括以下格式化步骤:
a、检测报表打印模板中是否有记录集数据域,或有多个记录集数据域;
b、如果步骤a中无记录集数据域,打印的总页数为模板中其它元素定义的最大页数,如果步骤a中有记录集,则进入步骤c;
c、取记录集数据域关联的报表数据,根据记录集数据域的分页属性计算该记录集数据域的页数;
d、报表打印的总页数为各记录集数据域中页数最大的。
本发明提供一种报表打印的模板定义和基于该模板的打印控件的实现方法,本发明描述的报表打印模板将报表的格式和报表的数据分离,采用MVC设计模式将报表抽象为模板格式定义(View)、报表数据(Model)和打印控件引擎(Controller)三部分,报表打印模板格式定义由本发明所提供的格式元素组成,设计精巧的模板格式元素能将报表模板格式灵活地描述,并很好地将报表模板格式与报表数据分离,报表模板格式一般用XML来描述,但不限于用XML,在符合本发明报表模板格式定义的规范下,可以用自定义格式的文本定义,不依赖于任何具体的开发语言,报表模板还可以独立于应用程序,单独存放并能复用。本发明所描述的打印控件引擎负责对报表模板定义进行格式化,并提供报表数据接口,打印软件可以使用本发明提供的打印控件数据接口提供报表的动态数据。
使用本发明提供的报表打印模板与打印控件,将大大简化各种应用程序打印功能的开发,软件开发人员也能在不修改应用程序代码的基础上对报表格式进行调整。
附图说明
图1为本发明基于报表打印模板格式实现的报表打印控件的总体结构图
图2为本发明基于报表打印模板格式实现的报表打印控件中格式化引擎描述图。
具体实施方式
下面结合附图和具体实施方式,进一步阐明本发明,应理解下述具体实施方式仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
名词解释:
ActiveX: 微软的组件技术,主要用于开发可用于Web的控件;
C/S: 一种软件架构,客户端访问数据库服务器;
B/S: 一种软件架构,使用浏览器作为客户端;
XML: 一种基本文本格式的数据交换方法,用来描述数据的标记语言。
报表打印的模板格式包括纸张、字体、线条、矩型框、图片、文本标签、单项数据域、表格数据域和记录集数据域等格式对象组成。
报表打印纸张属性由纸张类型、纸张宽度、纸张高度、上边柜、下边柜、左边柜和右边柜组成,打印纸张属性使用XML DTD描述为;
字体列表包括报表使用的所有字体的属性定义,其它对象使用字体时只关联字体的ID号,简化为报表对象的定义,字体的属性由名称、字体大小、是否为粗体、是否为斜体组成,
字体属性使用XML DTD描述为:
线条格式对象描述报表中的直线和斜线,包括线条的打印起始位置、线条的长度、线型、线宽、显示页号、跟随对象,使用XML DTD描述为:
显示页号pageNum是指该线条显示在打印报表的第几页,显示页号为0时表示所有页面都要打印该线条,一般用在打印报表的页眉等格式时。
跟随对象linkObj是本发明对位置相对复杂的元素设计的一个灵活的属性,它指定该元素位置是相对的,不是绝对的位置,linkObj指定跟随对象是打印对象中的记录集数据域对象,每一页中记录集数据域格式化为表格时,高度是动态的,所有跟随于记录集数据域的报表对象的位置在报表格式化中动态确定,跟随对象linkObj是借鉴了当前一些报表设计器的思想,但实现方式不一样,当前一些报表设计器主要采用分区设计,典型的分为header页眉区、detail明细区和footer页脚区,这种设计将报表格式划分为相对固定的区域,实现中国区的复杂报表就比较难,本发明将detail明细区的功能由记录集数据域来实现,header页眉区由显示页号属性来实现,footer页脚区由跟随对象来实现,使用报表的格式定义更自由,能更灵活地表达报表格式。
矩型格式对象描述报表中的线框,属性包括起始位置、矩型长宽、线型、线宽、边框类型、显示页号、跟随对象,本发明中的矩型格式对象可以对边框类型设置不同的值实现折线和对角线的打印,边框类型转换为二进制时,从低位到高位字节依次表示左边框、上边框、右边框、下边框、左对角线和或对象线,使用XML DTD描述为:
图片格式对象描述报表中的图片,属性包括图片文件名\起始位置、图片打印大小、图片打印方式,显示页号、跟随对象,使用XML DTD描述为:
文本标签格式对象描述报表中静态文本,使用XML DTD描述为:
单项数据域格式对象描述报表中的单项数据的打印格式,区别于表格数据和记录集数据,单项数据域有全局唯一name属性,数据域的数据由外部程序使用接口putData放入,调用的方式为putData(单项数据域name,数据值),属性包括名称、打印位置、打印大小,显示页号、边框类型、边框宽度、边框模式、跟随对象、对齐方式和显示模式,使用XML DTD描述为
本发明描述的单项数据域格式的属性drawMode设置为Fit时,可以根据文本的长度自动使用大小合适的字体进行打印,以防止数据超长被截掉。单项数据域格式继承了矩型格式对象的所有属性,所以矩型格式对象的特性单项数据域也支持。
表格数据域是描述报表中有固定行数和列数的二维打印内容,它由列(Column)和行(Row)子格式对象组成,其中的一行一列为一个单元格,单元格可以看作单项数据域,表格数据域有全局唯一的标识名称,由属性name提供,它的宽度等于各列的宽度之和,高度等于各行高度之和,表格数据域的列数与行数是固定的,如果表格的记录数不确定,可以使用记录集数据域来描述,表格数据域的二维数据由接口putData提供,调用方式为putData(表格数据域name, 表格数据域单元格数据,行号,列号),表格数据域使用XML DTD描述为:
列格式对象的使用XML DTD描述为:
行格式对象使用XML DTD描述为:
记录集数据域是本发明描述的报表打印模板的核心格式对象,用于报表明细数据的打印,也是ActiveX打印控件引擎格式化的重要依据,记录集数据域只包括列格式对象,列格式对象与表格数据域的列格式对象相同,记录集数据域不包含行格式对象,行高由height属性定义,记录集数据域可以灵活按多栏形式显示,由colNup和rowNup属性来定义,colNup表示纵向分栏数目,每栏之间的空白宽度由gapWidth属性定义,rowNup表示模向分栏数目,每栏之间的空白高度由gapHeight属性定义,分栏的数据填充顺序可以由上至下或由左至右,由dataFill属性定义,记录集数据域实现首页与非首页上下起始位置单独设置,由属性nextTop和nextBottom定义,isPadding属性用于一些报表需要使用空行来填充最后一页的记录,
记录集数据域的报表数据与表格数据域的数据类似,由外部程序调用ActiveX打印控件的putData接口设置,调用方式为putData(记录集数据域name,表格数据域单元格数据,行号,列号),使用XML DTD描述为:
图1从总体上描述本发明的主要组成,首先要对打印的报表进行格式分析,按本发明提供的格式对象,将报表的打印格式进行定义,如表1所代表的报表:
表1:
表1具有代表性,按本发明的格式对象,可以描述为:
表1打印报表的数据主体为data记录集数据域,由于打印的列不多,一张A4大小的标准纸张可以分两个纵向的栏,所以设置记录集数据域data的colNup=2,标题文本由Label定义,并设置pageNum=0和 linkObj="data",引擎格式化时将标题在每一个栏中复制打印,实现标题分栏的效果。Label text="制表人"是由跟随属性来决定位置,设置linkObj="data"和默认的pageNum=1,引擎格式化时计算出data记录集数据域当前页的实际高度后,再将”制表人"的位置计算出来,并只在每页的第一栏中跟随,区别于表格的标题Label,因为两个对象的pageNum不一样,所以引擎可以进行不同的处理。
报表格式模板定义完成后,可以将模板文件作为资源独立存放,也可以作为应用程序的内部定义,ActiveX的接口loadTemp可以读入模板文件或模板资源,当读入模板文件时调用loadTemp(String temp),参数temp指明模板文件的位置,可以是本地也可以是远程,当temp为XML格式时,引擎将temp本身作为模板读入。
外部应用程序使用ActiveX的数据设置接口将报表打印的数据转入引擎,调用方法为:
putData(格式对象名称,数据,行,列)
行与列参数不传时,引擎认为是对单行数据域进行设置
外部应用程序使用ActiveX的打印接口,实现打印,调用方法为:
print(flag)
flag参数用于设置打印时是否显示操作系统的标准打印对话框
打印时ActiveX控件主要进行格式化步骤,如图2所示,包括以下格式化步骤:
a、检测报表打印模板中是否有记录集数据域,或有多个记录集数据域;
b、如果步骤a中无记录集数据域,打印的总页数为模板中其它元素定义的最大页数,如果步骤a中有记录集,则进入步骤c;
c、取记录集数据域关联的报表数据,根据记录集数据域的分页属性计算该记录集数据域的页数;
d、报表打印的总页数为各记录集数据域中页数最大的。
Claims (5)
1.一种基于报表打印模板格式实现的报表打印控件,用以实现报表模板格式与数据分离,其特征在于:由报表打印控件引擎将数据引入模板,并格式化出打印文件。
2.根据权利要求1所述的基于报表打印模板格式实现的报表打印控件,其特征在于:所述报表打印模板格式将报表格式设定为由纸张、字体、线条、矩形、图片、文本标签、单项数据域、表格数据域和记录集数据域组成。
3.根据权利要求1或2所述的基于报表打印模板格式实现的报表打印控件,其特征在于:该报表打印控件基于ActiveX控件技术实现,包括读取报表打印模板接口、报表数据设置接口和打印接口,读取报表打印模板接口方法名为loadTemp,报表数据设置接口方法名为putData,打印接口名为print。
4.根据权利要求1或2所述的基于报表打印模板格式实现的报表打印控件,其特征在于:提供一种报表格式对象中的linkObj属性,用于实现复杂布局的报表打印。
5.根据权利要求1或2所述的基于报表打印模板格式实现的报表打印控件,其特征在于:提供格式化引擎格式化出打印文件,所述格式化引擎,包括以下格式化步骤:
a、检测报表打印模板中是否有记录集数据域,或有多个记录集数据域;
b、如果步骤a中无记录集数据域,打印的总页数为模板中其它元素定义的最大页数,如果步骤a中有记录集,则进入步骤c;
c、取记录集数据域关联的报表数据,根据记录集数据域的分页属性计算该记录集数据域的页数;
d、报表打印的总页数为各记录集数据域中页数最大的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012102873022A CN102830947A (zh) | 2012-08-13 | 2012-08-13 | 一种基于报表打印模板格式实现的报表打印控件 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012102873022A CN102830947A (zh) | 2012-08-13 | 2012-08-13 | 一种基于报表打印模板格式实现的报表打印控件 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102830947A true CN102830947A (zh) | 2012-12-19 |
Family
ID=47334100
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012102873022A Pending CN102830947A (zh) | 2012-08-13 | 2012-08-13 | 一种基于报表打印模板格式实现的报表打印控件 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102830947A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103617014A (zh) * | 2013-12-18 | 2014-03-05 | 用友软件股份有限公司 | 报表首页和续页打印方法 |
CN104360826A (zh) * | 2014-12-10 | 2015-02-18 | 用友软件股份有限公司 | 报表自定义分页打印装置和方法 |
CN104657091A (zh) * | 2013-11-20 | 2015-05-27 | 航天信息股份有限公司 | 一种税控系统中模板数据格式化打印方法 |
CN107463348A (zh) * | 2017-07-05 | 2017-12-12 | 深圳市坐标软件开发有限公司 | 基于B/S架构实现Web端自定义格式打印方法及系统 |
CN108733332A (zh) * | 2018-06-19 | 2018-11-02 | 山东浪潮通软信息科技有限公司 | 一种通用的打印模板元数据设计方法 |
CN108762693A (zh) * | 2018-04-03 | 2018-11-06 | 四川九阵科技股份有限公司 | 一种自定义打印设计系统及方法 |
CN109829147A (zh) * | 2019-01-31 | 2019-05-31 | 恒生电子股份有限公司 | 报表导出方法及装置 |
CN110210455A (zh) * | 2019-06-18 | 2019-09-06 | 石家庄捷弘科技有限公司 | 一种打印内容格式化提取方法 |
CN111045614A (zh) * | 2019-12-12 | 2020-04-21 | 中国建设银行股份有限公司 | 流水报表打印方法、套打文件生成方法、客户端及服务器 |
CN111142815A (zh) * | 2019-12-26 | 2020-05-12 | 杭州涂鸦信息技术有限公司 | 基于b/s的标签打印系统 |
CN112836479A (zh) * | 2020-12-30 | 2021-05-25 | 佛山欧神诺云商科技有限公司 | 数据报表生成方法、系统以及存储装置 |
CN113822033A (zh) * | 2020-12-23 | 2021-12-21 | 京东科技信息技术有限公司 | 报表的生成方法、装置、设备以及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1250567A (zh) * | 1997-03-13 | 2000-04-12 | 国际商业机器公司 | 连到计算机网络上的信息站和服务器 |
CN1504879A (zh) * | 2002-12-02 | 2004-06-16 | 深圳市中兴通讯股份有限公司 | 实现跨平台和复杂统计计算报表的方法和系统 |
CN101261720A (zh) * | 2008-03-26 | 2008-09-10 | 孙传钢 | 用计算机提高银行工作效率的综合方法 |
-
2012
- 2012-08-13 CN CN2012102873022A patent/CN102830947A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1250567A (zh) * | 1997-03-13 | 2000-04-12 | 国际商业机器公司 | 连到计算机网络上的信息站和服务器 |
CN1504879A (zh) * | 2002-12-02 | 2004-06-16 | 深圳市中兴通讯股份有限公司 | 实现跨平台和复杂统计计算报表的方法和系统 |
CN101261720A (zh) * | 2008-03-26 | 2008-09-10 | 孙传钢 | 用计算机提高银行工作效率的综合方法 |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104657091A (zh) * | 2013-11-20 | 2015-05-27 | 航天信息股份有限公司 | 一种税控系统中模板数据格式化打印方法 |
CN104657091B (zh) * | 2013-11-20 | 2018-11-13 | 航天信息股份有限公司 | 一种税控系统中模板数据格式化打印方法 |
CN103617014A (zh) * | 2013-12-18 | 2014-03-05 | 用友软件股份有限公司 | 报表首页和续页打印方法 |
CN103617014B (zh) * | 2013-12-18 | 2016-09-28 | 用友网络科技股份有限公司 | 报表首页和续页打印方法 |
CN104360826A (zh) * | 2014-12-10 | 2015-02-18 | 用友软件股份有限公司 | 报表自定义分页打印装置和方法 |
CN104360826B (zh) * | 2014-12-10 | 2017-10-10 | 用友网络科技股份有限公司 | 报表自定义分页打印装置和方法 |
CN107463348A (zh) * | 2017-07-05 | 2017-12-12 | 深圳市坐标软件开发有限公司 | 基于B/S架构实现Web端自定义格式打印方法及系统 |
CN107463348B (zh) * | 2017-07-05 | 2021-04-27 | 深圳坐标软件集团有限公司 | 基于B/S架构实现Web端自定义格式打印方法及系统 |
CN108762693A (zh) * | 2018-04-03 | 2018-11-06 | 四川九阵科技股份有限公司 | 一种自定义打印设计系统及方法 |
CN108733332A (zh) * | 2018-06-19 | 2018-11-02 | 山东浪潮通软信息科技有限公司 | 一种通用的打印模板元数据设计方法 |
CN108733332B (zh) * | 2018-06-19 | 2021-04-16 | 浪潮通用软件有限公司 | 一种通用的打印模板元数据设计方法 |
CN109829147A (zh) * | 2019-01-31 | 2019-05-31 | 恒生电子股份有限公司 | 报表导出方法及装置 |
CN109829147B (zh) * | 2019-01-31 | 2023-06-30 | 恒生电子股份有限公司 | 报表导出方法及装置 |
CN110210455A (zh) * | 2019-06-18 | 2019-09-06 | 石家庄捷弘科技有限公司 | 一种打印内容格式化提取方法 |
CN111045614A (zh) * | 2019-12-12 | 2020-04-21 | 中国建设银行股份有限公司 | 流水报表打印方法、套打文件生成方法、客户端及服务器 |
CN111045614B (zh) * | 2019-12-12 | 2023-07-21 | 中国建设银行股份有限公司 | 流水报表打印方法、套打文件生成方法、客户端及服务器 |
CN111142815A (zh) * | 2019-12-26 | 2020-05-12 | 杭州涂鸦信息技术有限公司 | 基于b/s的标签打印系统 |
CN111142815B (zh) * | 2019-12-26 | 2023-07-14 | 杭州涂鸦信息技术有限公司 | 基于b/s的标签打印系统 |
CN113822033A (zh) * | 2020-12-23 | 2021-12-21 | 京东科技信息技术有限公司 | 报表的生成方法、装置、设备以及存储介质 |
CN112836479A (zh) * | 2020-12-30 | 2021-05-25 | 佛山欧神诺云商科技有限公司 | 数据报表生成方法、系统以及存储装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102830947A (zh) | 一种基于报表打印模板格式实现的报表打印控件 | |
CN101308488B (zh) | 基于版式文件的文档流式信息处理方法及装置 | |
Clausner et al. | Aletheia-an advanced document layout and text ground-truthing system for production environments | |
JP2019083063A (ja) | モバイル向けのおよび他の表示環境をサポートするインタラクティブなサイトおよびアプリケーションの自動変換のためのシステムおよび方法 | |
CN101937427B (zh) | 一种基于浏览器的内容编辑及发布的系统及方法 | |
CN100565601C (zh) | 一种票据处理装置及方法 | |
US20070266309A1 (en) | Document transfer between document editing software applications | |
CN104239284A (zh) | 一种图文自动排版的方法和装置 | |
CN103324731A (zh) | 将电子表格文件转换为网页格式文件的方法和装置 | |
CN106469140A (zh) | 一种报表生成系统及其方法 | |
CN103635897A (zh) | 对运行页面进行动态更新 | |
EP2544099A1 (en) | Method for creating an enrichment file associated with a page of an electronic document | |
CN101706716A (zh) | 基于vo的表单定制配置与解析运行方法 | |
US20100107048A1 (en) | Document processor and document processing method | |
CN104217036A (zh) | 一种网页内容提取方法和设备 | |
CN110738037A (zh) | 用于自动生成电子表格的方法、装置、设备及存储介质 | |
CN104881275A (zh) | 一种电子报表生成方法及装置 | |
CN111104557A (zh) | 基于标准文档标记语言规范的异构文档处理系统及方法 | |
US11194458B2 (en) | Generating and modifying content using data structures | |
CN110659527A (zh) | 电子表单中的表格检测 | |
KR102110281B1 (ko) | 자동화된 작성물 평가기 | |
CN103246753A (zh) | 一种根据数据库结构生成实体元数据模型的方法 | |
CN103970890B (zh) | 一种实时网页数据的生成方法及装置 | |
CN114661286A (zh) | 一种大屏可视化代码生成方法、系统及存储介质 | |
CN112417826B (zh) | Pdf在线编辑方法、装置、电子设备和可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C05 | Deemed withdrawal (patent law before 1993) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20121219 |