图片 22

怎么样达成报表设计中的高精度报表套打?

Posted by

在无数行业中票据具备从严的正业职业,格式是无奈改进的,生机勃勃旦格式有所改造,票据数据就能失灵无效。因而普通情状下,我们会在预先设计好格式的报表的打字与印刷版中,手动填入数据音讯,如广大的各个账本,报废单等填写数据。

一月二十六日京东商城揭晓了中华电商领域首张电子发票,同期宣布相关系统规范上线,那申明着华夏电商的步子又迈进迈出了重在的一步。最近“电子发票”覆盖的劳务范围是在日本东京地区购买书籍、音像商品的民用购买者。消费者在开展点名项目网络海消防费时可筛选开具普通纸质发票或电子发票。本文将揭破怎样通过草龙珠城ActiveReports报表报表完毕电子收据的功能。

 

 

在利用葡萄干城ActiveReports报表控件完毕小票打字与印刷、发货单打字与印刷、物流清单打字与印刷、商品条码印制、职员和工人工卡印制之类的效果与利益时,您只需在希图报表阶段加载套打纸作为报表背景图片,实际打字与印刷时仅将数据打字与印刷到套打纸的对应岗位。

对于套打地铁处境,日常出现在偏下二种境况: 
1:清单类打字与印刷,日常也许是曾经是在曾经印制好的纸张上打字与印刷 
2:单据小票类,平日单据格式固定,如每张打字与印刷5行数据,何况这种格式是曾经印制好的,当然机打小票除却。 

单张票据手动填入是平素不其余难点的,而随着办公自动化,多量数据都亟待电子化管理,不仅仅快速还利于保存,不易出错。在票据成为健康办公操作时,手动填入不仅仅不能够满意何况超级低效,又因为票据的格式是力不能及修正的,古板的表格工具平常是耗费量的艺术分明数据区域的地点,来规划报表。如此一来,制作一张票据打字与印刷的表格不唯有费时费事,并且很难有限扶助票据的灵光,更是力不从心知足未来现身的新票据格式的供给。套打报表的现身减轻了那大器晚成难点,简化了电子票证制作打字与印刷的功用。

 

大家以第2种意况为例举行求证,因为第2种会了第1种也自然就知道了 
在那大家运用程序代码+报表中设置背景图片的秘籍来兑现。 

 

1、创造报表文件

成立报表,加多背景图片,并依靠打字与印刷参数来展示只怕隐瞒背景图片

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

图片 1

报表增加完毕之后,在报表财富微电脑中的【嵌入式图像】节点中加多增值税发票背景图片

图片 2

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

图片 3

图片 4

增加完背景图片之后,大家在相应文字增加TextBox 控件用于体现数据,最后得到的兼顾成效如下:

图片 5 

 

1、纸张尺寸类型很难调节客商端的,那就用雷凌纸,总结设置比较大侧边距和下部距,以符合你的单据尺寸;

套打报表
套打也被称作定位打字与印刷,即在一张预设格式的票子上,零相对误差打印上需求填写的数量内容。预设票据纸刘恒以精晓为,在表格制作进度中,为报表设置为一定的报表背景(票据电子版),然后依据此背景设置供给填写的数额项及相配的多少控件。由此打印时只打字与印刷数据,而全方位背景不会输出到打字与印刷机中。套打报表也足以早先的知晓为“套格式打字与印刷”。套打报表作用是报表开垦工具提供的最中央最常用且最核算报表专门的学问性的功效。

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     }

2、页面设置,准确总括左侧距与上方距,放好你需打字与印刷的机件与不需打字与印刷的构件(Top与Left卡塔尔;

 

3、运路程序

图片 6

 

3、窗体上,多少个控件:CrystalReport控件、CrystalReportViewer控件和PrintDialog控件,让CrystalReportViewer控件的ShowPrintButton=false,避防顾客从它运行打字与印刷;

编码达成套打代码,工作量大不说,达成逻辑特别复杂,精准度不可能掌握控制。如下图中的打字与印刷,很鲜明为了对齐大写的“现金支付”栏目,其余类其他打字与印刷都已经离开。

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

http://www.gcpowertools.com.cn/products/activereports\_demo.htm
图片 7

有关阅读:

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

 矩表 –
今世数码分析中必备的表格工具

 

4、在营造报表的时候,把您无需打字与印刷的局地使用图片代替。

图片 8

如下图。

 

 图片 9

动用景况

使用了图片来取代固定数据。如上海教室中的“仓库储存集团名称”等标题。

套打功效在百行万企的表格打字与印刷中都有很广阔的选取。如小票打字与印刷,发货运单,以至布满的各个证据等,上面大家就来看有的行当套打报表的身体力行。
财务系统中发票打字与印刷正是不行规范的套打报表的实例。在报表设计进程中只要求将诸如:名称、抬头、地址电话等消息,而任何背景不会输出到打字与印刷机中。

5、报表打字与印刷类:

图片 10

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using Easipay.Controls.Printer;

using System.Drawing.Printing;



namespace Warehouse.Report

{

    public class ReportAllocateBLM : ReportBase, IPrintReport

    {

        // <summary>

        /// 生成报表对象

        /// </summary>

        /// <returns></returns>

        public object Report()

        {

            return new rptAllocateBLMTHD();

        }



        /// <summary>

        /// 打印预览, 设置报表数据的方法:

        /// </summary>

        /// <param name="rpt">报表</param>

        /// <param name="reportData">需要打印的数据</param>

        /// <param name="boolBackgroupPic">是否打印背景图片</param>

        public void PrePrint(ref CrystalDecisions.CrystalReports.Engine.ReportDocument rpt, object reportData, bool boolBackgroupPic)

        {

            ProtionOutHeadReport info = GetDataSet(reportData);



            AddBarNo(ref rpt);



            rpt.SetDataSource(info);

            System.Drawing.Printing.PrintDocument pd = new PrintDocument();

            System.Drawing.Printing.PaperSize paperSize = new System.Drawing.Printing.PaperSize("ProtionInHeadReport", 827, 1200);

        }

        ///<summary>

        ///生成报表所需要的DataSet

        ///</summary>

        ///<param name="reportData">由界面中传过来的数据</param>

        ///<returns></returns>

        private ProtionOutHeadReport GetDataSet(object reportData)

        {

            ProtionOutHeadReport outBillDs = new ProtionOutHeadReport();

            Easipay.WGQ.Entitys.ProtionOutHead head = reportData as Easipay.WGQ.Entitys.ProtionOutHead;

            if (head != null)

            {

                FillDataTable<Easipay.WGQ.Entitys.ProtionOutHead>(GetHeadList(head), outBillDs.ProtionOutHead);

            }

            if (head.ProtionOutODetail != null)

            {

                FillDataTable<Easipay.WGQ.Entitys.ProtionOutODetail>(GetDetailList(head), outBillDs.ProtionOutODetail);

            }

            if (head.ProtionOutMDetail != null)

            {

                FillDataTable<Easipay.WGQ.Entitys.ProtionOutMDetail>(GetMDetailList(head), outBillDs.ProtionOutMDetail);

            }

            return outBillDs;

        }

        /// <summary>

        /// 获取报表头

        /// </summary>

        /// <param name="head">进区凭单表头信息</param>

        /// <returns></returns>

        private List<Easipay.WGQ.Entitys.ProtionOutHead> GetHeadList(Easipay.WGQ.Entitys.ProtionOutHead head)

        {

            List<Easipay.WGQ.Entitys.ProtionOutHead> list = new List<Easipay.WGQ.Entitys.ProtionOutHead>();

            list.Add(head);

            return list;

        }

        /// <summary>

        /// 获取报表体

        /// </summary>

        /// <param name="head">进区凭单带表体的表头信息类</param>

        /// <returns></returns>

        private List<Easipay.WGQ.Entitys.ProtionOutODetail> GetDetailList(Easipay.WGQ.Entitys.ProtionOutHead head)

        {

            List<Easipay.WGQ.Entitys.ProtionOutODetail> list = new List<Easipay.WGQ.Entitys.ProtionOutODetail>();

            foreach (Easipay.WGQ.Entitys.ProtionOutODetail item in head.ProtionOutODetail)

            {

                list.Add(item);

            }



            return list;

        }

        /// <summary>

        /// 获取报表体

        /// </summary>

        /// <param name="head">进区凭单带表体的表头信息类</param>

        /// <returns></returns>

        private List<Easipay.WGQ.Entitys.ProtionOutMDetail> GetMDetailList(Easipay.WGQ.Entitys.ProtionOutHead head)

        {

            string pid = string.Empty;

            List<Easipay.WGQ.Entitys.ProtionOutMDetail> list = new List<Easipay.WGQ.Entitys.ProtionOutMDetail>();

            foreach (Easipay.WGQ.Entitys.ProtionOutMDetail item in head.ProtionOutMDetail)

            {                

                pid = item.pid;

             if (pid=="2")

             {

                 list.Add(item);

             }



            }

//每页要打印八条记录,如果不足8条,则补空行

            while (list.Count < 8)

            {



                Easipay.WGQ.Entitys.ProtionOutMDetail detail = new Easipay.WGQ.Entitys.ProtionOutMDetail();

                detail.pid = pid;

                System.Threading.Thread.Sleep(1);



                detail.id = (DateTime.UtcNow.Ticks % 100000000000).ToString();               

                list.Add(detail);

            }

            return list;

        }

        string m_PrintTypeBarName;

        /// <summary>

        /// 报表打印类型

        /// </summary>

        public string PrintTypeBarName

        {

            get

            {

                if (string.IsNullOrEmpty(m_PrintTypeBarName))

                {

                    return "分拨货物提货单";

                }

                return m_PrintTypeBarName;



            }

            set

            {

                m_PrintTypeBarName = value;

            }

        }

    /// <summary>

        /// 按需要隐藏报表上的某些控件,这里隐藏的都是图片控件,其他的可以自行添加:

        /// </summary>



        public void HidePicture(ref CrystalDecisions.CrystalReports.Engine.ReportDocument rpt)

        {

            try

            {

                foreach (CrystalDecisions.CrystalReports.Engine.Section section in rpt.ReportDefinition.Sections)

                {

                    foreach (CrystalDecisions.CrystalReports.Engine.ReportObject rptObject in section.ReportObjects)

                    {

                        if (rptObject is CrystalDecisions.CrystalReports.Engine.PictureObject)

                        {

                            //图片背景

                            (rptObject as CrystalDecisions.CrystalReports.Engine.PictureObject).ObjectFormat.EnableSuppress = true;

                        }

                    }

                }



            }

            catch

            {

            }

        }



    }

}






6、打印方法:
/// <summary>

/// 打印报表

/// </summary>

/// <param name="strPrintName">打印机名称</param>

/// <param name="shInt">打印份数</param>

/// <returns>true成功,false失败</returns>

private bool blnPrint(string strPrintName,string shInt)

{

bool blnPrintScuss=false;

int intCopies=0;

try

{

intCopies=int.Parse(shInt);

}

catch

{

intCopies=1;

}

try

{

                if (ipr == null)

                {                  

                    MessageBox.Show("打印报表出错");

                    blnPrintScuss = false;

                    return blnPrintScuss;

                }

// m_BillNewRpt.PrintOptions.PaperSize=CrystalDecisions.Shared.PaperSize.PaperA4;

                ipr.HidePicture(ref m_BillNewRpt);

m_BillNewRpt.PrintOptions.PrinterName = strPrintName;

m_BillNewRpt.PrintToPrinter(intCopies,false,1,m_intMaxPage);

blnPrintScuss=true;

}

catch (Exception ex)

{

blnPrintScuss=false;

MessageBox.Show("打印报表出错:"+ex.Message);

}

return blnPrintScuss;

}

发货物运输单是电商系统中十二分出色的套打报表,打字与印刷时只会打字与印刷数据,比如:顾客编码、寄件公司、联络人、地址等新闻。

 

图片 11

 

除却上述家常便饭的套打报表打印功效,像大家生存中积储凭条,等证据及发票的打字与印刷用正是套打成效。

 

图片 12

 

金玉锦绣方式

7、套打,只打字与印刷数据的功用。如下图。

本文以蒲陶城报表为例,在规划报表阶段加载套打纸作为报表背景图片,实际打字与印刷时仅将数据打字与印刷到套打纸的呼应岗位,以便更有益于的兑现报表套打。

 图片 13

 

 

1.
新建报表文件

 

环视制式表获取复印件,设置为背景层;创设福睿斯DL
报表,增加背景图片,并遵照打字与印刷参数来呈现只怕隐蔽背景图片,注意,如若对格式有那些严苛的渴求,提议采取页面报表。

8、非套打,全体打字与印刷的效应。如下图。

图片 14

 图片 15

 

 

 

2.
增添背景图片到报表

报表增加完结以往,在报表能源微机中的【嵌入式图像】节点中加多增值税收据背景图片。

图片 16

 

3.
增多图片控件

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

图片 17

 

4.
安装好背景图片

图片 18

到此背景已经设置在Default层中,背景层经常无需打字与印刷出来(因为是遵守制式表格打字与印刷的),由此设置Default层的TargetDevice
属性。

图片 19

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

 

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

草龙珠城报表控件首创建议报表层的筹划观念,报表分层设计是对报表中控件分组管理和准备,可对同组内的全方位控件实行锁定/解锁,增加/删除,显示/隐蔽,调度发光度等操作,分解报表设计,收缩复杂报表模板的安顿性难度。同有时候,能够层为单位调控其在区别道具上的可以看到性,如是不是在纸张突显,该层全数的控件是或不是输出到荧屏,该层是不是用于导出。零编码完结生龙活虎式多份、报表套打等中华夏族民共和国式报表须要。

 

6.
兑现套打器重-新建层

开辟【层微机】
点击+
符号,命名称为控件层,选中央调整件层后,在控件层中地方增多对应控件。

图片 20

加多控件到控件层 

图片 21

 

7.
预览报表

图片 22

转发请注脚来源:草龙珠城报表

 

连带阅读:

在线民报告表设计实战系列 –
制作图表类报表
在线民报告表设计实战体系 –
制作交叉深入分析表
在线民报告表设计实战类别 –
制作多Y轴组合图表

 

相关文章

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注