一种单据报表套打方法
【技术领域】
[0001]本发明涉及一种单据报表套打方法。
【背景技术】
[0002]报表设计是企业信息化中的重要部分,据统计,企业应用开发的60%工作都是制作各类报表,而其中,单据报表即票据在其中占据重要的地位。单据报表的打印方式分为套打和非套打,套打指在印刷好的单据上,将打印内容准确无误地打印到指定的位置;而非套打指在空白的单据打印纸上打印出单据报表包括表格的全部内容。传统的报表工具,需要用尺子量出数据在套打背景上的位置,然后再屏幕上根据尺寸定位数据所在单元格的位置,相当繁琐,容易出错。当前单据报表套打主流的方案是报表设计时将原始单据的扫描图作为单据报表背景,再在其需要打印内容的位置放上相应的数据库字段,打印时仅在印刷好的单据上打印从数据库获取的数据,若希望使用非套打模式,则将原始单据的扫描图作为背景图打印在单据上。
[0003]目前国内主流的报表设计工具,其设计单据报表的过程如下:1)将原始单据扫描成图片,并保存到指定文件夹;2)在报表设计器中新建单据报表,并将单据扫描图作为纸张背景,明确单据打印时是否打印单据扫描背景图;3)设计报表;4)保存报表到模板文件;5)用户在浏览器中浏览报表并执行套打。存在如下缺陷:
[0004]I)单据报表套打还是非套打需要由报表设计人员在设计时指定,报表用户在浏览报表时无法选择;
[0005]2)单据报表非套打通过将原始单据的扫描图作为背景图打印在单据上实现,容易出现字体模糊的问题。
【发明内容】
[0006]为解决上述问题本发明提供了一种单据报表套打方法。
[0007]本发明提供的技术方案是:一种单据报表套打方法,包括如下步骤:
[0008]步骤一):将原始单据扫描为图片:将原始单据扫描为原始单据图片,所述原始单据图片与原始单据大小相同;
[0009]步骤二)新建原始单据页面:创建原始单据页面,所述原始单据页面为空白页面;
[0010]步骤三)导入原始单据图片至原始单据页面:将原始单据图片导入原始单据页面作为背景,调整原始单据页面的大小至与原始单据图片完全重合;
[0011]步骤四)设计原始单据页面:在原始单据页面上,设置与背景相同的表格边框及静态文字,使原始单据页面与原始单据完全一致;
[0012]步骤五)设计实际单据页面:创建空白单据页面,即实际单据页面,然后将原始单据页面中背景图外的内容全部复制到实际单据页面,将数据库字段和报表函数放置到实际单据页面的对应位置;
[0013]步骤六)保存报表模板:将原始单据页面、实际单据页面、实际单据页面与原始单据页面的差异、原始单据图片和检索数据的查询语句保存到报表模板的不同内容节点,然后保存报表模板;
[0014]步骤七)浏览报表:在报表服务器中,用报表数据查询语句检索需要的数据,将其填充到实际单据页面中;
[0015]步骤八)报表打印:选择套打模式或非套打模式,若选择非套打模式则直接打印实际单据页面;若选择套打,则将通过报表数据查询语句检索到的数据及函数表达式求值结果填充到实际单据页面与原始单据页面的差异页面中的对应位置,然后打印此差异页面。
[0016]进一步的改进,所述原始单据页面和实际单据页面均包含若干行与若干列,所述步骤四)包含如下步骤:
[0017]I)调整原始单据页面的列宽与行高,使原始单据图片中的每个单元格,正好包含原始单据页面上的一个或多个单元格;
[0018]2)合并单元格,合并原始单据页面上的单元格,使背景中的每个单元格,对应包含原始单据页面上的一个单元格,即若原始单据背景图中单据表格的某个单元格包含原始单据页面上的多个单元格,则将这多个单元格合并,使得合并后的单元格与背景图中的单元格完全重合;
[0019]3)设置表格及单元格边框:根据原始单据图片上的表格及单元格的边框,为原始单据页面上对应的单元格设置相同的边框;
[0020]4)添加静态文字:在原始单据页面上添加与原始单据图片的文字对应的位置添加相同的原始单据页面文字;所述原始单据页面文字的字体及对齐方式与原始单据图片的文字一致。
[0021]进一步的改进,所述原始单据页面和实际单据页面均包含若干行与若干列,所述步骤五)包含如下步骤:
[0022]a.创建第二工作表,即实际单据页面;
[0023]b.查找原始单据页面实际使用区域:查找原始单据页面中的最后单元格,获取其行号和列号,根据此单元格的行号和列号确定实际单据页面需要使用的区域的行数和列数;
[0024]c.调整行高和列宽:将实际单据页面中用到的区域的行的高度和列的宽度设置为与原始单据页面对应相同;
[0025]d.处理合并单元格:搜索原始单据页面中有效使用区中的每个单元格,若该单元格为合并单元格,则找出该合并单元格包含的单元格集合,并在实际单据页面中将对应的单元格集合做合并处理;
[0026]e.复制单元格边框:搜索原始单据页面有效使用区中的每个单元格,若有边框,则在实际单据页面中对应单元格设置相同的边框;
[0027]f.复制文本:搜索原始单据页面有效使用区中的每个单元格,若有文本,则在实际单据页面中对应单元格设置相同的文本;
[0028]g.设置数据库字段及报表函数:从数据源中获取数据库字段或者报表函数放置到实际单据页面的对应的位置。
[0029]进一步的改进,所述原始单据页面和实际单据页面均包含若干行与若干列,所述步骤六)中,所述报表模板保存为XML文件,原始单据页面、实际单据页面、实际单据页面与原始单据页面的差异保存为所述XML文件中的一个区域节点,每个区域节点包含若干个行节点,所述行节点对应于报表模板中的行,每个行节点包含若干单元格节点,所述单元格节点对应于报表模板中的单元格,每个单元格的属性包含宽度、边框、字体、填充色及文本等,所述单元格的属性由报表模板中相应单元格的设置决定;原始单据页面和实际单据页面的区域子节点通过搜索报表模板的每个单元格得到;实际单据页面与原始单据页面的差异以实际单据页面的区域子节点为基础,将实际单据页面的每个单元格,减去出现在原始单据对应单元格子节点中的所有属性,即得到实际单据工作表与原始单据工作表的差异的区域子节点;所述原始单据图片存在指定目录下,报表模板中保存原始单据图片文件名,所述数据查询语句也以一个节点的形式保存在报表模板中。
[0030]进一步的改进,在所述步骤八)中,在报表浏览界面上设置复选框以指明是否套打,或者在报表浏览界面上分别设置套打按钮和非套打按钮,或者分别设置套打菜单和非套打菜单。
[0031]本发明具有如下优点:
[0032]I)单据报表套打还是非套打可以由报表用户在浏览报表时选择,增加了单据打印的灵活性;
[0033]2)单据报表非套打无需使用原始单据的扫描图作为背景图,保证了单据报表的打印质量。
【附图说明】
[0034]当结合附图考虑时,通过参照下面的详细描述,能够更完整更好地理解本发明以及容易得知其中许多伴随的优点,但此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定,其中:
[0035]图1单据报表套打/非套打设计流程示意图;
[0036]图2EXCEL报表系统中原始单据设计过程示意图;
[0037]图3实际单据设计流程示意图;
[0038]图4EXCEL报表系统中设计实际单据过程示意图。
【具体实施方式】
[0039]本发明结合实施例详细描述如下:
[0040]本发明实施例的报表设计器采用VSTO技术基于EXCEL开发,EXCEL表格界面即为报表系统的报表设计界面。
[0041]步骤一)将原始单据扫描为图片:用图像软件将扫描得到的原始单据图片大小调整为与原始单据相同。
[0042]步骤二)新建原始单据页面:用报表设计器创建一个空白工作薄,即原始单据页面。
[0043]步骤三)导入原始单据图片至原始单据页面:导入原始单据图片至原始单据页面作为原始单据页面的背景,将原始单据图片的左上角与EXCEL表格区域的左上角对齐。
[0044]步骤四)设计原始单据页面:如图2所示包含如下步骤:
[0045]I)调整原始单据页面的列宽与行高,使原始单据图片的每个单元格,正好包含原始单据工作表上的一个或多个单元格;
[0046]2)合并单元格,合并原始单据页面上的单元格,使背景中的每个单元格,对应包含原始单据页面上的一个单元格,即若原始单据背景图中单据表格的某个单元格包含原始单据工作表上的多个单元格,则将这多个单元格合并,使得合并后的单元格与背景图中的单元格完全重合;
[0047]3)设置表格及单元格边框:根据原始单据图片上的表格及单元格的边框,为原始单据页面上对应的单元格设置相同的边框;
[0048]4)添加静态文字:在原始单据页面上添加与原始单据图片的文字对应的位置添加相同的原始单据页面文字;所述原始单据页面文字的字体及对齐方式与原始单据图片的文字一致。
[0049]步骤五)设计实际单据页面:创建空白单据页