一、什么是FastReport?
FastReport是功能齐全的报表控件,使开发者可以快速并高效地为·NET/VCL/COM/ActiveX应用程序添加报表支持。
FastReport有很多产品,如FastReport.Net、FASTREPORT VCL等,这里不一一去做概述,描述下FastReport.Net的具体使用。
FastReport.Net
A、是一款适用于Windows Forms, ASP.NET和MVC框架的功能齐全的报表分析解决方案。
B、可用在Microsoft Visual Studio 2005到2015,支持.Net Framework 2.0到4.x。
C、2013版支持AJAX,云存储,地图编辑器和自定义标签。
二、使用FastReport可以完成什么功用?
打印预览、打印设计、导出PDF、根据数据源生成报表等
三、如何使用FastReport?
(1)下载安装
下载地址:链接: https://pan.baidu.com/s/1wAx3A-chefjgVUwWjvzDLw 密码: 2dca
解压后,见以下文件:
(2)打开程序,并进行界面汉化
A、双击Demo.exe打开程序
B、在弹出窗体中,点击设计按钮
弹出设计界面:
C、点击菜单File-- Select Language
弹出界面如下:界面已汉化
(3)设计模板:
A、根据情况,可适当删除画布中的位置,只保留Data数据区部分,删除方式见下图:
在对应模块的空白区域,点击右键--删除即可:
B、设置页面的尺寸:(很重要,与打印的面单纸大小要一致,如A4纸,或自定义的尺寸)
弹出设置窗口,如下:
点击确定后,画布会自动调整尺寸大小
C、点击左侧的工具,进行排版设计(此处以一个条形码做为案例):
点击条形码按钮,弹出编码方式,这里选择Code128(原因是生成的数据会做压缩,条形码更简洁,见下图有对比)
点击后,把鼠标移动到data编辑区,即可以看到一个条形码随鼠标移动:
如需添加文字,左侧的工具栏也有对应的按钮。
(4)保存模板:.frx后缀名
(5)电脑连接好打印机,安装好驱动,保证在打印机列表中,可以选择。
(6)在项目中使用模板,进行打印操作
1 private bool GodownEntryPrint(string instorageNumber, string localhostCode) 2 { 3 try 4 { 5 //创建Report对象 6 var report = new Report(); 7 //获得模板的路径 8 string reportLabel = Application.StartupPath + @"" + "Report\GodownEntry.frx"; 9 //判断文件是否存在 10 if (!File.Exists(reportLabel)) 11 { 12 MessageTool.Show("标签模板不存在!请先获取标签模板!"); 13 } 14 //清空 15 report.Clear(); 16 //加载报表模板 17 report.Load(reportLabel); 18 //获取模板中,对应的TextObject节点-替换模板内容 19 var textObject = report.FindObject("Text2") as TextObject; 20 if (textObject != null) textObject.Text = localhostCode; //库位编码 21 22 //同理:一/二维码文本替换 23 var barcodeObject = report.FindObject("Barcode1") as BarcodeObject; 24 if (barcodeObject != null) 25 { 26 barcodeObject.Text = instorageNumber; //入库单号 27 //更改一维码的生成方式为Code128码 28 barcodeObject.Barcode = new Barcode128(); 29 } 30 31 //预览面单 32 //report.Show(); 33 //默认不显示打印机选择页面 34 report.PrintSettings.ShowDialog = false; 35 //获取打印机的名称,这里是通过封装的方法去获取打印机名,这里可以直接指定“打印机名称”; 36 string strPrintName = PrinterHelper.GetPrintSetting("LocationPrint"); 37 if (string.IsNullOrWhiteSpace(strPrintName)) 38 { 39 MessageTool.Show("未设置打印机!"); 40 return false; 41 } 42 //当前操作打印机 43 report.PrintSettings.Printer = strPrintName; 44 //启动打印 45 report.Print(); 46 } 47 catch (Exception) 48 { 49 return false; 50 } 51 return true; 52 }