一种实现报表展示的方法

文档序号:6381716阅读:265来源:国知局
专利名称:一种实现报表展示的方法
技术领域
本发明涉及一种实现报表展示的方法。

背景技术
随着计算机软件技术的飞速发展,计算机软件系统已经成为现代企业不可缺少的运营支撑和管理手段,大量的报表也由原来的通过纸件制表完成,改为由计算机软件进行统计后完成展示。
早期的计算机报表皆是通过字符界面的程序进行展示,例如 工号 姓名性别 部门职务电话手机 电子邮件 ------ ------- ----- ------- ------- --------- ------------ ---------------- R0001 张重名 男人事部 经理2878740813509663896 zcm@163.com R0002 李四女人事部 职员28787408 li4@163.com C0001 王五男财务部 经理2878968713823250080 wang5@163.com C0003 丁六女财务部 会计师 28786144 ding6@163.com C0004 吴七女财务部 出纳28786144 wu7@163.com W0001 朱八男网络部 经理2878739813923898722 zhu8@163.com W0002 黄九男网络部 工程师 28780808 huang9@163.com W0019 张重名 女网络部 职员28780808 zhangcm@163.com W0029 周十男网络部 职员28780808 zhou10@163.com 随着计算机图形界面的逐步发展,报表展示进步到了比较美观的图形界面展现方式,例图1所示。
为了更加清晰美观的展示报表数据,计算机应用领域发展出了很多的报表展示手段,如使用Excel等电子表格、使用Word文档等复杂文档模板、使用QuickReport、ReportBuilder等专用报表工具。
报表统计数据绝大多数都是二维表格数据,因此现在业界的报表主要展示手段之一就是将报表统计数据通过一个计算机界面上的表格控件(Component)展示出来。
图2为Borland公司的Delphi开发工具中的一个表格控件——DBGird,该控件通过与返回的结果数据表建立一对一的关系来显示报表数据,例如有如下表格数据需要进行报表展示 工号 姓名 性别部门职务电话 手机 电子邮件 R0001张重名男人事部经理28787408 13509663896 zcm@163.com R0002李四女人事部职员28787408 li4@163.com C0001王五男财务部经理28789687 13823250080 wang5@163.com C0003丁六女财务部会计师28786144 Ding6@163.com C0004吴七女财务部出纳28786144 wu7@163.com W0001朱八男网络部经理28787398 13923898722 zhu8@163.com W0002黄九男网络部工程师28780808 huang9@163.com W0019张重名女网络部职员28780808 zhangcm@163.com W0029周十男网络部职员28780808 zhou10@163.com 则将该数据一一对应于表格控件中的列和行,如图1所示。
虽然上述诸多工具都能生成普通报表(即二维报表),但存在以下不足 1、对于打印格式不容易控制,报表的图形展示和实际打印出来的纸件格式不一致,即所见非所得。
2、无法满足树型报表格式的需求,如下 部门名称职员人数××公司总经理室1 人力 资源部考勤科2薪酬科2人事科3财务部出纳科3会计科4内部银行2业务部业务一部市场拓展部5售前服务部6售后服务部5策划部8业务二部市场拓展部7售前服务部5售后服务部5 策划部6…………………… …… 3、无法在报表上再进行二次运算。


发明内容
本发明的目的在于提供一种报表展示的方法,以使展示的报表格式与打印格式一致,还可生成树形报表和进行二次运算。
实现本发明的技术方案 种实现报表展示的方法,该方法为按待展示的报表格式生成该报表对应的模板,并采用超文本标记语言(HTML)在该模板中定义与待展示数据之间的联系;生成所述模板的HTML文件;当执行所述HTML文件时,根据定义的联系从存放待显示数据的文件中获取数据填入报表中并展示该报表。
其中 所述报表为普通型报表或树型报表。
所述的模板采用HTML定义,或者采用电子表格,或者采用Word文档。
所述模板文件中还包括用HTML语言定义的用于完成报表中的数据运算的运算符,展示报表时进行二次运算并将结果填入报表。
对普通型报表,在模板文件中为该报表定义一个特别的行,在执行模板文件时根据待展示的数据行数复制该行。
本发明具有以下有益效果 1、使报表的显示格式与打印格式一致,即所见即所得; 2、可以生成和打印树型报表; 3、允许在报表数据上进行二次运算。



图1为现有技术中展示的报表; 图2为现有技术中的报表控件;图3为本发明的流程图; 图4为本发明报表模板图; 图5为本发明展示的报表图; 图6A为本发明的树型报表模板图; 图6B为本发明展示的树型报表图。

具体实施例方式 计算机软件系统中的报表展示究其根本就是把一些数据通过计算机的界面展示出来,并能支持打印功能。这些要展示的数据中大部分都是一个二维的数据表格(在计算机术语中常把“列”称为“字段”(“Field”),把“行”称为“记录”(“Record”),因此第2行第3列又可以称为第2条记录的第3个字段。)。
例如 第1列 第2列 第3列第4列 第5列 第6列第7列第8列 R0001张重名男人事部经理28787408 13509663896 zcm@163.com R0002李四女人事部职员28787408 li4@163.com C0001王五男财务部经理28789687 13823250080 wang5@163.com C0003丁六女财务部会计师28786144 ding6@163.com C0004吴七女财务部出纳28786144 wu7@163.com W0001朱八男网络部经理28787398 13923898722 zhu8@163 com W0002黄九男网络部工程师28780808 huang9@163.com W0019张重名女网络部职员28780808 zhangcm@163.com W0029周十男网络部职员28780808 zhou10@163.com第1行 第2行 第3行 第4行第5行 第6行 第7行 第8行第9行 为了解决现有技术中存在的问题,本发明采用基于Html文件作为报表模板,通过在模板中定义和待展示的数据集之间建立关联来展现最后的数据,即首先编辑一个Html的模板,通过在模板中使用特殊的文字定义模板的显示部分和结果数据之间的关系,通过报表展示工具最后阶段合成最终需要的报表,即可以理解为报表模板+报表数据=最终报表。
参阅图3所示,具体处理流程如下 步骤10按待展示报表定义、编辑报表模板,在模板中使用特殊的文字定义模板的显示部分和结果数据之间的关系。
步骤20生成模块的HTML文件。
步骤30执行HTML文件以展示报表。
步骤40从存放统计数据(待显示数据)的二维表中获得数字并填入报表相应的部分。
步骤50根据报表中的运算符完成二次运算并将结果填入报表。
步骤60展示最终报表。包括显示和打印等输出方式。
为了更清楚地说明本发明,下面使用两个例子进一步说明 例一 有如下一个二维表格数据需要生成报表 工号姓名性别部门职务电话手机 电子邮件 R0001张重名男人事部经理2878740813509663896 zcm@163.com R0002李四女人事部职员28787408 li4@163.com C0001王五男财务部经理2878968713823250080 wang5@163.com C0003丁六女财务部会计师28786144 ding6@163.com C0004吴七女财务部出纳28786144 wu7@163.com W0001朱八男网络部经理2878739813923898722 zhu8@163.com W0002黄九男网络部工程师28780808 huang9@163.com W0019张重名女网络部职员28780808 zhangcm@163.com W0029周十男网络部职员28780808 zhou10@163.com 定义该报表模板如图4所示,模板的原始HTML文件如下 <HTML>  <HEAD>  <TITLE>@Value(Title)</TITLE>  <META CONTENT=″text/html;charset=gb2312″HTTP-EQUIV=″Content-Type″>  <META CONTENT=″Microsoft FrontPage 5.0″NAME=″GENERATOR″>  <META CONTENT=″FrontPage.Editor.Document″NAME=″ProgId″>  <STYLE>  BODY { FONT-FAMILY宋体,Arial;FONT-SIZE14px}  P{FONT-FAMILY宋体,Arial;FONT-SIZE14px;LINE-HEIGHT18pt}  TABLE { FONT-FAMILY宋体,Arial;FONT-SIZE14px}  </STYLE><!-- SIPO <DP n="5"> --><dp n="d5"/>  </HEAD>  <BODY>  <P ALIGN=″center″><FONT SIZE=″4″COLOR=″#0000FF″><B>职员信息统计报表  </B></FONT></P>  <P>统计部门×××公司</P>  <TABLE ALIGN=″center″BORDER=″1″ cellPadding=″5″cellSpacing=″0″  WIDTH=″100%″>   <TR>  <TD ALIGN=″middle″bgColor=″#d5d5d5″><FONT SIZE=″2″><B>工号<br/></B></FONT></TD>  <TD ALIGN=″middle″bgColor=″#d5d5d5″><FONT SIZE=″2″><B>姓名<br/></B></FONT></TD>  <TD ALIGN=″middle″bgColor=″#d5d5d5″><FONT SIZE=″2″><B>性别<br/></B></FONT></TD>  <TD ALIGN=″middle″bgColor=″#d5d5d5″><FONT SIZE=″2″><B>部门<br/></B></FONT></TD>  <TD ALIGN=″middle″bgColor=″#d5d5d5″><FONT SIZE=″2″><B>职务<br/></B></FONT></TD>  <TD ALIGN=″middle″bgColor=″#d5d5d5″><FONT SIZE=″2″><B>电话<br/></B></FONT></TD>  <TD ALIGN=″middle″bgColor=″#d5d5d5″><FONT SIZE=″2″><B>手机<br/></B></FONT></TD>  <TD ALIGN=″middle″bgColor=″#d5d5d5″><FONT SIZE=″2″><B>电子邮件<br/></B></FONT></TD>  </TR>  <TR Name=″ByRecord″>  <TD ALIGN=″middle″>@Field(0)</TD>    <TD ALIGN=″middle″>@Field(1)</TD>  <TD ALIGN=″middle″>@Field(2)</TD>  <TD ALIGN=″middle″>@Field(3)</TD>  <TD ALIGN=″middle″>@Field(4)</TD>  <TD ALIGN=″middle″>@Field(5)</TD>  <TD ALIGN=″middle″>@Field(6)</TD>  <TD ALIGN=″middle″>@Field(7)</TD></TR></TABLE><P>打印时间@Value(Now)&amp;nbsp ;&amp;nbsp ;&amp;nbsp ;&amp;nbsp;&amp;nbsp ;&amp;nbsp ;&amp;nbsp ;&amp;nbsp ;&amp;nbsp ;&amp;nbsp;&amp;nbsp;&amp;nbsp;第@Value(PageIndex)页/共@Value(TotalPage)页</P></BODY></HTML> 在报表模板中定义了一个特别的行TR,其有个属性为Name=“ByReord”,通过该配置,报表工具就知道了要根据实际的记录数将该行复制多份;该行中的每一个单元格为一个显示项目,每个项目通过“@Field(n)”和统计报表数据中的第n个字段建立数据关联,即Field(0)就是第1个字段的值,依此类推。
通过报表工具将模板和数据进行整合以后生成最终的报表如图5所示。
例二要生成如下树型结构的报表 部门名称职员人数××公司 总经理室1 人力 资源部考勤科2薪酬科2人事科3小计7财务部出纳科3会计科4内部银行2小计9业务部业务一部市场拓展部5售前服务部6售后服务部5策划部8小计24业务二部市场拓展部7售前服务部5售后服务部5策划部6小计23合计47总计63 实际在计算机内部保存的还是如下的一张二维数据表 部门编码部门名称 职员人数010000总经理室1020100考勤科2020200薪酬科2020300人事科3030100出纳科3030200会计科4030300内部银行2 040101 市场拓展部5 040102 售前服务部6 040103 售后服务部5 040104 策划部8 040201 市场拓展部7 040202 售前服务部5 040203 售后服务部5 040204 策划部6 它的每一条记录并没有表现出任何的树型关系(父子关系),它仅仅记录了叶子节点部门的职员人数,但每个部门的部门编码是唯一不重复的,通过部门编码这个字段可以唯一的定位到上述表格中一条记录。
根据需求生成如图6A所示的报表模板其中的每个“(@Value(KeyField,FieldIndex)”为一个报表显示项目,其意义是通过KeyField的值(这里就是部门编码)来定位到一条记录,后面的FieldIndex代表要将该条记录的第几个字段填写在该单元格(这里使用的是第2个字段—职员人数),该定义后面的等号意义为将该项目取个别名为×××(如第一个的“(@Value(010000,2)”取名为“a1”);@Sum运算符就是报表工具的二次运算功能(这里的@Sum是求和,如“@Sum(a21,a22,a23)”就是将别名为a21、a22和a23的单元格中的数值进行求和。
通过上述的数据填写和二次计算功能,生成如图6B所示的最终报表。
由上可知,本发明在报表模板基础上生成最终报表,因此报表的设计、展示和打印都是基于报表模板,使用户能够获得统一的展示效果,解决了所见非所得的问题;其次,因为报表是基于模板的,所以可以在设计时将报表直接设计成树型结构,解决了传统报表工具无法生成树型报表的问题;最后,因为是通过报表工具在模板上填写报表数据完成最终报表,所以在完成报表数据填写后,报表工具还可以根据模板中的指定运算符完成一些二次运算。
权利要求
1、一种实现报表展示的方法,其特征在于该方法为
按待展示的报表格式生成该报表对应的模板,并采用超文本标记语言(HTML)在该模板中定义与待展示数据之间的联系;
生成所述模板的HTML文件;
当执行所述HTML文件时,根据定义的联系从存放待显示数据的文件中获取数据填入报表中并展示该报表。
2、如权利要求1所述的方法,其特征在于,所述报表为普通型报表或树型报表。
3、如权利要求1或2所述的方法,其特征在于,所述的模板采用HTML定义,或者采用电子表格,或者采用Word文档。
4、如权利要求1所述的方法,其特征在于,所述模板文件中还包括用HTML语言定义的用于完成报表中的数据运算的运算符,展示报表时进行二次运算并将结果填入报表。
5、如权利要求2所述的方法,其特征在于,对普通型报表,在模板文件中为该报表定义一个特别的行,在执行模板文件时根据待展示的数据行数复制该行。
全文摘要
本发明公开了一种实现报表展示的方法,该方法为按待展示的报表格式生成该报表对应的模板,并采用超文本标记语言(HTML)在该模板中定义与待展示数据之间的联系;生成所述模板的HTML文件;当执行所述HTML文件时,根据定义的联系从存放待显示数据的文件中获取数据填入报表中并展示该报表。
文档编号G06F3/14GK1652074SQ20041000412
公开日2005年8月10日 申请日期2004年2月7日 优先权日2004年2月7日
发明者张可 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1