在许多行业中票据具有严格的行业规范,格式是无法修改的,一旦格式有所改动,票据数据就会失效无效。因此通常情况下,我们会在预先设计好格式的报表的打印版中,手动填写数据信息,如常见的各类账本,报销单等填写数据。

6月27日京东商城发布了中国电子商务领域首张电子发票,同时宣布相关系统正式上线,这标志着中国电子商务的步伐又向前迈出了重要的一步。目前“电子发票”覆盖的服务范围是在北京地区购买图书、音像商品的个人消费者。消费者在进行指定品类网上消费时可选择开具普通纸质发票或电子发票。本文将揭秘如何通过葡萄城ActiveReports报表报表实现电子发票的功能。

 

在使用葡萄城ActiveReports报表控件实现发票打印、发货单打印、物流清单打印、商品条码印刷、员工工卡印刷之类的功能时,您只需在设计报表阶段加载套打纸作为报表背景图片,实际打印时仅将数据打印到套打纸的相应位置。

单张票据手动填写是没有任何问题的,而随着办公自动化,大量数据都需要电子化处理,不仅高效还便于保存,不易出错。在票据成为常规办公操作时,手动填写不仅无法满足而且非常低效,又因为票据的格式是无法修改的,传统的报表工具通常是用测量的方法确定数据区域的位置,来设计报表。如此一来,制作一张票据打印的报表不仅费时费力,而且很难确保票据的有效性,更是无法满足未来出现的新票据格式的要求。套打报表的出现解决了这一难题,简化了电子票据制作打印的功能。

 

 

1、创建报表文件

创建报表,添加背景图片,并根据打印参数来显示或者隐藏背景图片

在工程中添加ActiveReports报表,报表模板选择【ActiveReports
7页面报表】,命名为rptInvoice.rdlx

ca88手机版 1

报表添加完成之后,在报表资源管理器中的【嵌入式图像】节点中添加增值税发票背景图片

ca88手机版 2

从VS工具箱中将
Image 控件添加到报表设计界面,并设置 Image 控件的值,如下所示:

ca88手机版 3

ca88手机版 4

添加完背景图片之后,我们在相应文字添加
TextBox 控件用于显示数据,最终得到的设计效果如下:

ca88手机版 5 

 

套打报表
套打也被称作定位打印,即在一张预设格式的票据上,零误差打印上需要填写的数据内容。预设票据纸张可以理解为,在报表制作过程中,为报表设置为特定的报表背景(票据电子版),然后根据此背景设置需要填写的数据项及匹配的数据控件。因此打印时只打印数据,而整个背景不会输出到打印机中。套打报表也可以通俗的理解为“套格式打印”。套打报表功能是报表开发工具提供的最基本最常用且最考验报表专业性的功能。

2、自定义 WebViewer 控件

自定义 WebViewer
控件,在工具栏中添加【套打】按钮,当用户点击【套打】时运行报表(不显示背景图)并打印

在工程的ASPX页面中添加两个
WebViewer 控件,一个用于报表预览,一个用于报表打印.
添加完成之后设置两个WebViewer控件的ViewerType为FlashViewer,
并设置FlashViewerOptions中的UseClientApi为True.

在页面中添加以下
JavaScript ,用于报表的打印操作:

 1     <script language="javascript" type="text/javascript">
 2         var viewer, viewerforprint;
 3         var pages;
 4 
 5         window.onload = function () {
 6             GrapeCity.ActiveReports.Viewer.OnLoad("<%=WebViewer1.ClientID %>", function () {
 7                 viewer = GrapeCity.ActiveReports.Viewer.Attach("<%=WebViewer1.ClientID %>");
 8                 viewer.setEventsHandler({
 9                     OnToolClick: function (e) {
10                         if (e.Tool == "套打") {
11                             printreport();
12                             return false;
13                         }
14                     },
15                     OnLoadProgress: function (e) {
16                         if (e.State == "Completed") {
17                             pages = e.PageCount;
18                         }
19                     }
20                 });
21             });
22 
23             GrapeCity.ActiveReports.Viewer.OnLoad("<%=WebViewer2.ClientID %>", function () {
24                 viewerforprint = GrapeCity.ActiveReports.Viewer.Attach("<%=WebViewer2.ClientID %>");
25             });
26         }
27 
28         function printreport() {
29             var orient = "None";
30             var scale = "None";
31             var from = 1;
32             var to = pages;
33             var ops = viewerforprint.CreatePrintOptions();
34             ops.AdjustPaperOrientation = orient;
35             ops.ScalePages = scale;
36             ops.ClearPageRanges();
37             ops.AddPageRange(from, to);
38 
39             viewerforprint.Print(ops);
40 
41         }
42 
43     </script>

 

切换到ASPX后台代码视图,
添加以下代码在 WebViewer 工具栏中添加[套打]按钮:

 

 1     private void CustomizeToolbar()
 2     {
 3         // 隐藏打印范围按钮
 4         ToolBase btnRang = WebViewer1.FlashViewerToolBar.Tools["PageRangeButton"];
 5         btnRang.Visible = false;
 6 
 7         // 隐藏打印按钮
 8         ToolBase btnPrint = WebViewer1.FlashViewerToolBar.Tools["PrintButton"];
 9         btnRang.Visible = false;
10 
11         ToolButton btnCPrint = Tool.CreateButton("套打");
12         btnCPrint.Caption = "套打";
13         btnCPrint.ToolTip = "套打";
14 
15         WebViewer1.FlashViewerToolBar.Tools.Insert(0, btnCPrint);
16     }

 

3、运行程序

ca88手机版 6

 

编码实现套打代码,工作量大不说,实现逻辑非常复杂,精准度无法掌控。如下图中的打印,很明显为了对齐大写的“现金支付”栏目,其他项目的打印都已经偏离。

在线演示及源码下载地址:

http://www.gcpowertools.com.cn/products/activereports\_demo.htm
ca88手机版 7

相关阅读:

【报表福利大放送】100余套报表模板免费下载 

 矩表 –
现代数据分析中必不可少的报表工具

 

ca88手机版 8

 

使用场景

套打功能在各行各业的报表打印中都有很广泛的应用。如发票打印,发货运单,以及常见的各种凭证等,下面我们就来看一些行业套打报表的示例。
财务系统中发票打印就是非常典型的套打报表的实例。在报表设计过程中只需要将比如:名称、抬头、地址电话等信息,而整个背景不会输出到打印机中。

ca88手机版 9

发货运单是电子商务系统中非常典型的套打报表,打印时只会打印数据,比如:客户编码、寄件公司、联络人、地址等信息。

ca88手机版 10

除了上述常见的套打报表打印功能,像我们生活中存款凭条,等凭据及小票的打印用就是套打功能。

ca88手机版 11

实现方法

本文以葡萄城报表为例,在设计报表阶段加载套打纸作为报表背景图片,实际打印时仅将数据打印到套打纸的相应位置,以便更方便的实现报表套打。

 

1.
新建报表文件

扫描制式表获取复印件,设置为背景层;创建RDL
报表,添加背景图片,并根据打印参数来显示或者隐藏背景图片,注意,如果对格式有非常严格的要求,建议选择页面报表。

ca88手机版 12

 

 

2.
添加背景图片到报表

报表添加完成之后,在报表资源管理器中的【嵌入式图像】节点中添加增值税发票背景图片。

ca88手机版 13

 

3.
添加图片控件

将图片控件添加到设计器中,并设置图片的以下属性:

ca88手机版 14

 

4.
设置好背景图片

ca88手机版 15

到此背景已经设置在Default层中,背景层通常不需要打印出来(因为是按照制式表格打印的),因此设置Default层的TargetDevice
属性。

ca88手机版 16

接下来设置套打内容控件。

 

5.
使用报表分层进行套打

葡萄城报表控件首创提出报表层的设计理念,报表分层设计是对报表中控件分组管理和设计,可对同组内的全部控件进行锁定/解锁,添加/删除,显示/隐藏,调整透明度等操作,分解报表设计,降低复杂报表模板的设计难度。同时,可以层为单位控制其在不同设备上的可见性,如是否在纸张显示,该层所有的控件是否输出到屏幕,该层是否用于导出。零编码实现一式多份、报表套打等中国式报表需求。

 

6.
实现套打重点-新建层

打开【层管理器】
点击+
符号,命名为控件层,选中控件层后,在控件层中位置添加对应控件。

ca88手机版 17

添加控件到控件层 

ca88手机版 18

 

7.
预览报表

ca88手机版 19

转载请注明出自:葡萄城报表

 

相关阅读:

在线报表设计实战系列 –
制作图表类报表

在线报表设计实战系列 –
制作交叉分析表

在线报表设计实战系列 –
制作多Y轴组合图表

 

相关文章