CN103793464A - 一种基于中立格式的报表导出方法 - Google Patents
一种基于中立格式的报表导出方法 Download PDFInfo
- Publication number
- CN103793464A CN103793464A CN201310702709.1A CN201310702709A CN103793464A CN 103793464 A CN103793464 A CN 103793464A CN 201310702709 A CN201310702709 A CN 201310702709A CN 103793464 A CN103793464 A CN 103793464A
- Authority
- CN
- China
- Prior art keywords
- neutral
- report
- data
- resolved
- picture
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/84—Mapping; Conversion
- G06F16/88—Mark-up to mark-up conversion
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Document Processing Apparatus (AREA)
Abstract
本发明公开了一种基于中立格式的报表导出方法,属于数据处理技术领域。本发明通过使用XML来对中立报表格式进行描述和展现,通过该方法,开发人员仅需针对中立报表格式开发导出程序,然后针对中立报表格式实现不同导出文件格式对应的解析器,即可实现报表导出多种第三方文件的功能。同时,当前端报表元素、布局设计等发生变化时,开发人员只需修改解析引擎部分,后端导出程序无需改动,即可将最新的报页面导出成各种格式,免去了开发人员在解析引擎中对导出部分重复开发,提高了已有代码的可复用性以及开发效率,实现了报表引擎的“一次编码,多种输出”。
Description
技术领域
本发明属于数据处理技术领域,更准确地说本发明涉及一种将报表展示页面导出为第三方通用文件格式(如Pdf、Word、Excel、Html)的方法。
背景技术
如今,不管是在企业级信息系统中,还是在SaaS应用中,报表都已经是一个非常重要的组成部分。报表一般通过报表模板及其含有的数据集实现。报表模板中的报表元素可分为动态扩展元素和非扩展元素两种类型:动态扩展元素指可以与数据集绑定的元素,解析时会根据数据集的数量复制扩展;非扩展元素不能与数据集绑定,其解析时只能作为静态元素解析。通过将动态扩展元素和非扩展元素相结合,可为用户提供多层次、具备复杂表格展现能力的报表系统。报表能够为用户提供可视化的信息展现、提升系统的易用性、促进用户的数据录入,而报表的导出是报表系统中的一个必备功能。
报表导出通常指为将报表展示页面导出为诸如Word、PDF、Excel、Html等第三方的通用文件格式。然而,在现有的报表系统中,往往采取定制的方式针对每一种格式都开发相对应的导出程序。这种做法导致大量的重复编码工作,费时费力。因此,如何快速、高效地改善报表导出的方式已成为开发人员关注的焦点。
在许多领域中常使用XML来存储和传输数据信息。XML是指可扩展标记语言(Extensible Markup Language),它是一种标记语言。与主要用于表现和展示数据的HTML语言不同的是,XML被设计用来传送及携带数据。XML于1998年2月发布为W3C标准,时至今日,它已被公认为优秀的数据描述语言。它是各种应用程序之间进行数据传输的最常用的工具,并且在信息存储和描述领域变得越来越流行。目前可以很方便地将XML格式的文件转换得到如Word、PDF、Excel、Html等第三方的通用文件格式的文件。
发明内容
本发明的目的是:针对现有报表系统中的需要对每一种格式都开发相对应的导出程序、开发费时费力的问题,提供一种基于中立格式的报表导出方法。
具体地说,本发明是采用以下的技术方案来实现的,包括以下步骤:
1)对待导出的报表模板进行解析,获得该报表模板内部的所有报表元素以及该报表模板所含有的所有数据集,报表元素分为动态扩展元素和非扩展元素两种类型,每个动态扩展元素与其相对应的数据集相绑定;
2)将获得的待导出的报表模板内部的所有报表元素解析为内存中的报表元素实例;
3)根据获得的待导出的报表模板所含有的所有数据集,获取相应的数据集实例数据,并将获取的数据集实例数据缓存到内存中;
4)将内存中的报表元素实例中的非扩展元素实例直接解析成中立报表格式中的文本单元格或者图片;
5)将内存中的报表元素实例中的动态扩展元素实例解析成中立报表格式中的容器元素,并按照其绑定的数据集确定其需复制的数据集实例数据及其个数;
6)利用步骤5)中确定的数据集实例数据及其个数,分别将每个容器元素内部的元素解析成文本单元格或者图片;
7)将解析完成的中立报表格式按照XML格式导出为报表中立格式文件;
8)根据最终需导出的文件格式,对XML格式的报表中立格式文件进行解析,得到相应格式的报表导出文件。
上述技术方案的进一步特征在于,所述的中立报表格式中的文本单元格仅包含文本单元格的位置、大小、文字的内容、背景、字体和颜色信息,所述的中立报表格式中的图片仅包含图片的位置、大小、图片的内容和排列顺序信息。
本发明的有益效果如下:本发明先将报表解析为中立报表格式,再将中立报表格式导出为不同格式的第三方通用格式文件。通过发明,开发人员仅需针对中立报表格式开发导出程序,然后针对中立报表格式实现不同导出文件格式对应的解析器,即可实现报表导出多种第三方文件的功能。当前端报表元素、布局设计等发生变化时,开发人员只需修改解析引擎部分,后端导出程序无需改动,即可将最新的报页面导出成各种格式,免去了开发人员在解析引擎中对导出部分重复开发,提高了已有代码的可复用性以及开发效率,实现了报表引擎的“一次编码,多种输出”。同时,本发明还能够以较小代价灵活支持以后需导出的其它文件格式,无需为以后需导出的各个格式重新开发报表解析引擎,只需针对这些格式开发相应的解析器即可。而且,由于中立报表格式只含有最简单的文本和图片,且里面是已经计算好的文本,因此在最终导出时,只需要进行布局计算和输出文本,速度非常快。本发明还能够为报表缓存提供条件,通常由于报表实例解析时间较长,可以利用本发明在服务端缓存中立报表格式,这样在面向最终用户时便可快速渲染出报表。
附图说明
图1为本发明方法的过程示意图。
具体实施方式
下面参照附图并结合实例对本发明作进一步详细描述。
如图1所示, 本发明的基于中立格式的报表导出方法,主要包括两个过程,即先将报表解析为中立报表格式,再将中立报表格式导出为不同格式的第三方通用格式文件。由于报表解析后并不会直接导出为最终文件,而是解析为中立报表格式,而中立报表格式主要用来描述实际报表绘制页面的元素,构成报表页面的各元素之间又具有层次和嵌套关系,这与XML文档中元素和属性之间的关系十分相似,同时,由于XML具有非常好的通用性、扩展性和跨平台性,因此本发明使用XML来描述中立报表格式。
具体而言,本发明包括以下步骤:
1)对待导出的报表模板进行解析,获得该报表模板内部的所有报表元素以及该报表模板所含有的所有数据集,报表元素分为动态扩展元素和非扩展元素两种类型,每个动态扩展元素与其相对应的数据集相绑定;
2)将获得的待导出的报表模板内部的所有报表元素解析为内存中的报表元素实例;
3)根据获得的待导出的报表模板所含有的所有数据集,获取相应的数据集实例数据,并将获取的数据集实例数据缓存到内存中;
4)将内存中的报表元素实例中的非扩展元素实例直接解析成中立报表格式中的文本单元格或者图片;
5)将内存中的报表元素实例中的动态扩展元素实例解析成中立报表格式中的容器元素,并按照其绑定的数据集确定其需复制的数据集实例数据及其个数;
6)利用步骤5)中确定的数据集实例数据及其个数,分别将每个容器元素内部的元素解析成文本单元格或者图片;
7)将解析完成的中立报表格式按照XML格式导出为报表中立格式文件;
8)根据最终需导出的文件格式,对XML格式的报表中立格式文件进行解析,得到相应格式的报表导出文件。
上述中立报表格式中的文本单元格仅包含文本单元格的位置、大小、文字的内容、背景、字体和颜色信息,所述的中立报表格式中的图片仅包含图片的位置、大小、图片的内容和排列顺序信息。
在解析时,用XML来描述报表中立格式具体内容,第一行对报表中立格式进行声明,定义XML版本为1.0,所使用编码为UTF-8。文档中含有Document、Page、Container、TextBox、Image等元素。
第二行,描述该文档的根元素,定义根元素的名称为“Document”,并为其定义属性,包括:
在“Document”元素上定义名为“name”的属性,以指定文档所对应的报表模板的名称。
在“Document”元素上定义名为“lastModifyTime”的属性,以指定文档的最后修改时间。
在“Document”元素上定义名为“lastModifyTime”的属性,以指定文档的最后修改时间。
在“Document”元素上定义名为“xmlns”的属性,以指定该文档的命名空间。
文档实际是由多个页面组成,因此在根元素“Document”下定义名为“Page”的元素,并为其定义属性,包括:
在“Page”元素上定义名为“name”的属性,以指定页面的名称,页面的名称与模板中页面的名称相同。
在“Page”元素上定义名为“width”的属性,以指定页面的宽度,该属性的值可以为数字也可为“auto”,默认为“auto”,即自动计算。
在“Page”元素上定义名为“height”的属性,以指定页面的高度,该属性的值可以为数字也可为“auto”,默认为“auto”,即自动计算。
在“Page”元素上定义名为“margins”的属性,以指定页面的边距。
在“Page”元素上定义名为“counts”的属性,以指定所含元素的个数,缺省为0。
在“Page”元素上定义名为“metric”的属性,以指定页面的度量单位,该属性的值可以为“millimeter”、“inch”、“hinch”之一,默认为“millimeter”,即毫米。
每一个“Page”都包含了若干个元素,“Page”下可包含“Container”、“TextBox”、“Image”等元素。
在“Container”元素上定义名为“counts”的属性,以指定包含元素的个数。
在“Container”元素上定义名为“x”的属性,以指定容器的x坐标。
在“Container”元素上定义名为“y”的属性,以指定容器的y坐标。
在“Container”元素上定义名为“width”的属性,以指定容器的宽度,该属性的值可以为数字也可为“auto”,默认为“auto”,即自动计算。
在“Container”元素上定义名为“height”的属性,以指定容器的高度,该属性的值可以为数字也可为“auto”,默认为“auto”,即自动计算。
在“Container”元素上定义名为“bkground”的属性,以指定容器背景色。
在“TextBox”元素上定义名为“x”的属性,以指定文本框的x坐标。
在“TextBox”元素上定义名为“y”的属性,以指定文本框的y坐标。
在“TextBox”元素上定义名为“width”的属性,以指定文本框的宽度。
在“TextBox”元素上定义名为“height”的属性,以指定文本框的高度。
在“TextBox”元素上定义名为“text”的属性,以指定文本框的内容。
在“TextBox”元素上定义名为“font”的属性,以指定文本框包含文字的字体。
在“TextBox”元素上定义名为“color”的属性,以指定文本框包含文字的颜色。
在“TextBox”元素上定义名为“bkground”的属性,以指定文本框背景色。
在“Image”元素上定义名为“x”的属性,以指定图片的x坐标。
在“Image”元素上定义名为“y”的属性,以指定图片的y坐标。
在“Image”元素上定义名为“width”的属性,以指定图片的宽度。
在“Image”元素上定义名为“height”的属性,以指定图片的高度。
在“Image”元素上定义名为“align”的属性,以指定图片的排列顺序。
在“Image”元素上定义名为“content”的节点,以指定图片的内容,为Base64格式的字符串。
虽然本发明已以较佳实施例公开如上,但实施例并不是用来限定本发明的。在不脱离本发明之精神和范围内,所做的任何等效变化或润饰,同样属于本发明之保护范围。因此本发明的保护范围应当以本申请的权利要求所界定的内容为标准。
Claims (2)
1.一种基于中立格式的报表导出方法,其特征在于,包括以下步骤:
1)对待导出的报表模板进行解析,获得该报表模板内部的所有报表元素以及该报表模板所含有的所有数据集,报表元素分为动态扩展元素和非扩展元素两种类型,每个动态扩展元素与其相对应的数据集相绑定;
2)将获得的待导出的报表模板内部的所有报表元素解析为内存中的报表元素实例;
3)根据获得的待导出的报表模板所含有的所有数据集,获取相应的数据集实例数据,并将获取的数据集实例数据缓存到内存中;
4)将内存中的报表元素实例中的非扩展元素实例直接解析成中立报表格式中的文本单元格或者图片;
5)将内存中的报表元素实例中的动态扩展元素实例解析成中立报表格式中的容器元素,并按照其绑定的数据集确定其需复制的数据集实例数据及其个数;
6)利用步骤5)中确定的数据集实例数据及其个数,分别将每个容器元素内部的元素解析成文本单元格或者图片;
7)将解析完成的中立报表格式按照XML格式导出为报表中立格式文件;
8)根据最终需导出的文件格式,对XML格式的报表中立格式文件进行解析,得到相应格式的报表导出文件。
2.根据权利要求1所述的基于中立格式的报表导出方法,其特征在于,所述的中立报表格式中的文本单元格仅包含文本单元格的位置、大小、文字的内容、背景、字体和颜色信息,所述的中立报表格式中的图片仅包含图片的位置、大小、图片的内容和排列顺序信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310702709.1A CN103793464A (zh) | 2013-12-19 | 2013-12-19 | 一种基于中立格式的报表导出方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310702709.1A CN103793464A (zh) | 2013-12-19 | 2013-12-19 | 一种基于中立格式的报表导出方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103793464A true CN103793464A (zh) | 2014-05-14 |
Family
ID=50669130
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310702709.1A Pending CN103793464A (zh) | 2013-12-19 | 2013-12-19 | 一种基于中立格式的报表导出方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103793464A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105426394A (zh) * | 2015-10-18 | 2016-03-23 | 广州赛意信息科技股份有限公司 | 基于跨平台的移动报表生成方法和系统 |
CN106372047A (zh) * | 2016-08-30 | 2017-02-01 | 东软集团股份有限公司 | 大数据报表导出方法和装置 |
CN107885839A (zh) * | 2017-11-10 | 2018-04-06 | 山东浪潮通软信息科技有限公司 | 一种在Word文件中读取信息的方法和装置 |
CN112560413A (zh) * | 2020-12-15 | 2021-03-26 | 中国人寿保险股份有限公司 | 基于配置模式的报表扩展方法、装置和设备 |
CN114139514A (zh) * | 2022-02-08 | 2022-03-04 | 四川信用通数字科技股份有限公司 | 一种智能报表生成方法、装置及计算机存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101111839A (zh) * | 2004-11-30 | 2008-01-23 | 科格洛斯公司 | 多维企业软件系统中的报表模板生成 |
CN101308490A (zh) * | 2008-04-28 | 2008-11-19 | 北京航空航天大学 | 一种动态报表生成方法及平台 |
CN101770449A (zh) * | 2008-12-30 | 2010-07-07 | 北京天融信网络安全技术有限公司 | 一种使用可扩展标记语言动态生成报表的方法和装置 |
US20100268616A1 (en) * | 2009-04-20 | 2010-10-21 | Arthur Tisi | Appratus, system and method for an automated stock ledger |
-
2013
- 2013-12-19 CN CN201310702709.1A patent/CN103793464A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101111839A (zh) * | 2004-11-30 | 2008-01-23 | 科格洛斯公司 | 多维企业软件系统中的报表模板生成 |
CN101308490A (zh) * | 2008-04-28 | 2008-11-19 | 北京航空航天大学 | 一种动态报表生成方法及平台 |
CN101770449A (zh) * | 2008-12-30 | 2010-07-07 | 北京天融信网络安全技术有限公司 | 一种使用可扩展标记语言动态生成报表的方法和装置 |
US20100268616A1 (en) * | 2009-04-20 | 2010-10-21 | Arthur Tisi | Appratus, system and method for an automated stock ledger |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105426394A (zh) * | 2015-10-18 | 2016-03-23 | 广州赛意信息科技股份有限公司 | 基于跨平台的移动报表生成方法和系统 |
CN105426394B (zh) * | 2015-10-18 | 2019-10-18 | 广州赛意信息科技股份有限公司 | 基于跨平台的移动报表生成方法和系统 |
CN106372047A (zh) * | 2016-08-30 | 2017-02-01 | 东软集团股份有限公司 | 大数据报表导出方法和装置 |
CN107885839A (zh) * | 2017-11-10 | 2018-04-06 | 山东浪潮通软信息科技有限公司 | 一种在Word文件中读取信息的方法和装置 |
CN107885839B (zh) * | 2017-11-10 | 2021-05-04 | 浪潮通用软件有限公司 | 一种在Word文件中读取信息的方法和装置 |
CN112560413A (zh) * | 2020-12-15 | 2021-03-26 | 中国人寿保险股份有限公司 | 基于配置模式的报表扩展方法、装置和设备 |
CN112560413B (zh) * | 2020-12-15 | 2023-08-04 | 中国人寿保险股份有限公司 | 基于配置模式的报表扩展方法、装置和设备 |
CN114139514A (zh) * | 2022-02-08 | 2022-03-04 | 四川信用通数字科技股份有限公司 | 一种智能报表生成方法、装置及计算机存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7017112B2 (en) | Importing and exporting markup language data in a spreadsheet application document | |
US6675355B1 (en) | Redline extensible markup language (XML) schema | |
US8024368B2 (en) | Generating XML instances from flat files | |
US9342556B2 (en) | RDF graphs made of RDF query language queries | |
US10540416B2 (en) | Linking source code to running element | |
CN108228180A (zh) | 基于可视化界面设计的自动代码生成方法及系统 | |
US9208255B2 (en) | Method of converting data of database and creating XML document | |
CN103793464A (zh) | 一种基于中立格式的报表导出方法 | |
US20090112901A1 (en) | Software, Systems and Methods for Modifying XML Data Structures | |
CN103092890A (zh) | 报表自动生成及发送的系统及方法 | |
US8762398B2 (en) | Method of integrating data of XML document with database on web | |
US20130124969A1 (en) | Xml editor within a wysiwyg application | |
US11644949B2 (en) | Autotagging a template of a reporting workbook | |
US20060004718A1 (en) | Report layout model and method | |
CA2964481C (en) | Systems and methods for normalized schema comparison | |
Nösinger et al. | XML Schema Transformations: The ELaX Approach | |
CN104462045B (zh) | 一种文档处理方法和装置 | |
Schubotz et al. | Bravo MaRDI: A Wikibase Powered Knowledge Graph on Mathematics | |
CN108733353B (zh) | 一种界面构造方法和装置 | |
Van den Brink et al. | From geo-data to linked data: automated transformation from GML to RDF | |
Kimber et al. | Using UML to define XML document types | |
KR20110066758A (ko) | Xml 자동 생성 시스템 및 방법 | |
Schubotz et al. | Bravo MaRDI: A Wikibase Knowledge Graph on Mathematics. | |
CN102831228A (zh) | 一种异构可扩展置标语言文档的格式转换方法 | |
Ollis et al. | Tracking sub-page components in document workflows |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20140514 |
|
RJ01 | Rejection of invention patent application after publication |