一种报表打印方法

文档序号:6466075阅读:144来源:国知局
专利名称:一种报表打印方法
技术领域
本发明涉及一种才艮表打印方法。
背景技术
在网管系统中,报表打印是报表信息输出的一种重要方式。在目 前的报表打印方法中, 一般通过定制报表模板来描述报表的格式、数据、 众多的属性信息,然后按模板产生打印页面。定制模板的过程繁瑣且 容易出错,同时使用模板固化了打印的样式和格式,不能满足用户对报 表打印所见即所得的需求。发明内容本发明所要解决的技术问题是提供一种更加通用的报表打印方法, 具有较强的实用性。为解决上述技术问题,本发明是通过以下技术方案实现的 一种报表打印方法,包括以下步骤(1) 从待打印表中提取相关数据信息;(2) 生成空的打印页,计算待打印表的页头、页脚在打印页中的 坐标位置,再在打印页中相应位置设置页头和页脚信息;(3) 根据默认行高、打印页面的大小以及待打印表的表列数和列 宽比例在打印页中生成初始的网才各;(4) 根据待打印表的表格数据调整所述网格中各行的高度,并向其中设置相应数据;(5)绘制所生成的打印页,进行打印预览和打印。其中,所述步骤(4)之后还包括若当前打印页的空间使用完毕 或通过计算得到当前打印页的剩余空间不再适合设置新行,则删除当前 打印页中没有设置数据的行,并生成下一个打印页,在其中生成网格, 在该网格中继续设置数据,直至待打印表的全部数据生成到了打印页。其中,所述数据信息包括报表的页头信息、页脚信息、表列数、表 列宽以及表格数据。其中,所述步骤(2)中,根据打印页的可绘制区域、绘制字体类 型、对齐方式以及需绘制的字符数量来计算页头和页脚的坐标位置。其中,所述步骤(3)进一步包括 根据打印页可绘制区域的高以及已占用空间了的页头和页脚的 高来计算打印页剩余可用高度;② 根据所述打印页剩余可用高度和缺省行高度计算打印页中初步 可设置的行数,同时按照待打印表的列数和列宽比例计算在打印页中设 置相同列数时各列的宽度;③ 按照所述初步可设置的行数、待打印表的列数以及打印页中各列 的宽度生成初始的网格。其中,所述步骤(4)中,所述网格中各行高度的调整方法为对 于每一行,根据列宽、绘制字体类型、对齐方式以及需绘制的字符数量 计算该行的各单元格需要设置的高度,取其中最大值作为该行的行高。本发明具有以下有益效果采用本发明,可以根据Java表格智能地生成打印预览的页面和进 行打印,满足了用户对一般报表表格打印的需求,实用性较强,且易于 实现。


图1是本发明的方法流程图;图2是应用本发明方法生成的普通报表的打印页;图3是应用本发明方法生成的合并了单元格的报表的打印页;图4是应用本发明方法生成的树形报表的打印页。
具体实施方式
请参阅图l,该图所示为本发明的报表打印方法流程,具体为101、 采用javax.swing.JTable控件从待打印表中提取相关数据信息, 包括待打印表的页头信息、页脚信息、表列数、表列宽以及表格数据, 其中的页头信息包括标题信息和表描述信息两部分。102、 设置打印页面的大小和方向,缺省行高度。打印页面大小一 般可以设置为A4纸(842 pixel, 595 pixel)大小,也即页面可绘制区域; 打印页面的方向一H可以设置正下方向Y轴正方向,正右方向为X轴 正方向。103、 生成空的打印页,之后先计算报表页头、页脚在打印页中的 坐标位置,页头位置包括待打印表的标题的X、 Y坐标和表描叙信息的 X、 Y坐标;再在打印页中相应位置设置页头和页脚信息。104、 根据默认行高、打印页面的剩余可用高度以及待打印表的表 列数和列宽比例在打印页中生成初始的网格。105、 根据待打印表的表格数据调整所述网格中各行的高度,并向 其中设置相应数据。106、 绘制所生成的打印页,进行打印预览和打印。 下面结合附图及具体实施例对本发明作进一步详细的描述 下面以最常见的A4纸(842 pixel, 595 pixel)打印为例,详细介绍本发明的报表打印方法第一步计算才艮表页头、页脚的坐标位置;计算报表页头、页脚的坐标位置时需要结合下列因素整体考虑可绘制区域根据纸的大小进行设置, 一般只需要使用宽度;绘制字体需要得到该字体下一个字符的高度和宽度;对齐方式包括左对齐、右对齐、居中对齐;绘制字符的数量字符多的情况下需要换行。第二步在打印页中生成初始的网格,生成算法如下,M、计算打印页的剩余可用高度H,按照公式11=可绘制区域的高一页头的高一页脚的高来计算;b2、根据剩余可用高度H和默认行高(默认为21pixel)计算打印页中初步可设置的行数。b3、根据A4纸的宽度(595 pixel),按照待打印表的列数和列宽比例计算在打印页中设置相同列数时各列的宽度;之后按照所述初步可设置的行数、待打印表的列数以及打印页中各列的宽度生成初始的网格。 第三步根据待打印表的表格数据调整上述网格中各行的行高,并向其中设置相应数据。若当前打印页的空间使用完毕或通过计算得到当前打印页的剩余空间不再适合设置新行,则删除当前打印页中没有设置 数据的行,并生成下一个打印页,在其中生成网格,在该网格中继续设 置数据,直至待打印表的全部数据生成到了打印页。该步骤中,网格中各行行高的调整方法为对于每一行,cl、计算该行各个单元格的高度,需结合下列因素整体考虑该列列宽报表表格列宽度成比例缩放,使所有列都可以在一打印 页内显示,就得到各列的宽度;绘制字体需要得到该字体下一个字符的高度和宽度;对齐方式包括左对齐,右对齐,居中对齐;单元格内容字符多的情况下需要换行。c2、对需要跨页的单元格的处理和行高计算如果打印页的网格已 经设置了数据行,且单元格需要的高度大于剩余可用高度,则不在当前 打印页显示单元格的内容,直接进入到下一个打印页的生成;如果打印 页的网格没有设置数据行,且单元格需要的高度大于打印页的剩余可用 高度,则需要在该报表页显示单元格一部分内容,此时报表打印页的剩 余可用高度H即作为该单元格需要的在当前打印页的行高,并保存未显 示部分,在生成的下一个打印页中显示。c3、取各个单元格所需要行高中的最大值作为该行行高。 第四步使用JDK API绘制生成的打印页,供打印预览和打印机 打印,dl、绘制l艮表打印页的页头和页脚;d2、绘制打印页的网格及网格数据,具体实现方法如下首先绘制打印页的外框,然后通过绘制横线和竖线形成打印页网 格。接着在打印页网格中绘制待打印表的字符,形成打印页数据网格。 其中横线的绘制基于打印页网格中各行的行高,竖线的绘制基于打印页网格中各列的列宽,在绘制字符时使用JTextArea作为每一个网格的渲 染器,以便折行;d3、实现打印页的预览和打印功能。请参阅图2至图4 ,这些图所示分别为采用上述方法所生成的普通报表、合并单元格的报表以及树表的打印页。以上实施例仅用以说明本发明的技术方案而非限制,仅仅参照较佳 实施例对本发明进行了详细说明。本领域的普通才支术人员应当理解,可 以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方 案的精神和范围,均应涵盖在本发明的权利要求范围当中。
权利要求
1、一种报表打印方法,其特征在于,包括以下步骤(1)从待打印表中提取相关数据信息;(2)生成空的打印页,计算待打印表的页头、页脚在打印页中的坐标位置,再在打印页中相应位置设置页头和页脚信息;(3)根据默认行高、打印页面的大小以及待打印表的表列数和列宽比例在打印页中生成初始的网格;(4)根据待打印表的表格数据调整所述网格中各行的高度,并向其中设置相应数据;(5)绘制所生成的打印页,进行打印预览和打印。
2、 如权利要求1所述的报表打印方法,其特征在于,所述步骤 (4)之后还包括若当前打印页的空间使用完毕或通过计算得到当前打印页的剩余空间不再适合设置新行,则删除当前打印页中没有设 置凄t据的行,并生成下一个打印页,在其中生成网^",在该网^^中继 续设置数据,直至待打印表的全部数据生成到了打印页。
3、 如权利要求1或2所述的报表打印方法,其特征在于,所述 数据信息包括报表的页头信息、页脚信息、表列数、表列宽以及表格 数据。
4、 如权利要求3所述的报表打印方法,其特征在于,所述步骤 (2)中,根据打印页的可绘制区域、绘制字体类型、对齐方式以及需绘制的字符数量来计算页头和页脚的坐标位置。
5、 如权利要求3所述的报表打印方法,其特征在于,所述步骤(3) 进一步包括① 根据打印页可绘制区域的高以及已占用空间了的页头和页脚 的高来计算打印页剩余可用高度;② 根据所述打印页剩余可用高度和缺省行高度计算打印页中初 步可设置的行数,同时按照待打印表的列数和列宽比例计算在打印页 中设置相同列数时各列的宽度;③ 按照所述初步可设置的行数、待打印表的列数以及打印页中各 列的宽度生成初始的网格。
6、如权利要求3所述的报表打印方法,其特征在于,所述步骤(4) 中,所述网格中各行高度的调整方法为对于每一行,根据列 宽、绘制字体类型、对齐方式以及需绘制的字符数量计算该行的各单 元格需要设置的高度,取其中最大值作为该行的行高。
全文摘要
本发明公开了一种报表打印方法,包括以下步骤(1)从待打印表中提取相关数据信息;(2)生成空的打印页,计算待打印表的页头、页脚在打印页中的坐标位置,再在打印页中相应位置设置页头和页脚信息;(3)根据默认行高、打印页面的大小以及待打印表的表列数和列宽比例在打印页中生成初始的网格;(4)根据待打印表的表格数据调整所述网格中各行的高度,并向其中设置相应数据;(5)绘制所生成的打印页,进行打印预览和打印。采用本发明,可以根据java表格智能地生成打印预览的页面和进行打印,满足了用户对一般报表表格打印的需求,实用性较强,且易于实现。
文档编号G06F9/44GK101334730SQ200810141639
公开日2008年12月31日 申请日期2008年7月18日 优先权日2008年7月18日
发明者喻金石 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1