• FastReport使用方法(C/S版)


     前言

    这两天群里一直有群友问一些关于FastReport的问题,结合他们的问题,在这里做一个整理,有不明白的可以加

    FastReport 交流群

    554714044

    工具

    VS2017 +FastReport

    开始

    1.新建项目,添加三个按钮。预览、设计、打印

    2.添加FastReport 引用,这里有三个dll文件

    3.思路:首先打印要有模板,要有打印的数据,两者结合呈现出我们想要的打印格式,然后进行各种操作。这个思路一定要清晰,这样我们才能知道我们需要做什么。

    话不多说上代码:(这里只给出了最简单的逻辑)

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using FastReport;
    
    namespace FastReportTest
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            public string Url = "Test.frx";//文件路径(目前存放在运行目录下面,方便调试),后续建议做数据库文件管理,存放在数据库
            Report frt = new Report();
    
            /// <summary>
            /// 打印控件事件开始准备工作
            /// 获取打印模板文件
            /// </summary>
            private void PrintPrepare()
            {
                frt.Load(Url);
                frt.RegisterData(PrintData(), "Tab1");
                frt.GetDataSource("Tab1").Enabled = true;
            }
    
            private void 预览_Click(object sender, EventArgs e)
            {
               
                PrintPrepare();
                frt.Show();
            }
    
            private void 设计_Click(object sender, EventArgs e)
            {
                PrintPrepare();
                frt.Design();
            }
    
            private void 打印_Click(object sender, EventArgs e)
            {
                PrintPrepare();
                frt.PrintPrepared();
                frt.PrintSettings.ShowDialog = false;
                frt.Print();
            }
    
            /// <summary>
            /// 虚拟打印数据源、
            /// 数据源建议:
            /// 1.数据源最好在数据库建立单独的表管理,这样每次要修改打印格式,不用编译代码,直接修改数据库即可
            /// 2.多个数据源的,如果存在主从关系,建议建立视图,直接查询视图,方便数据处理。
            /// 
            /// </summary>
            private DataTable PrintData()
            {
                DataTable dt = new DataTable();
    
                dt.Columns.Add("ID", typeof(int));
                dt.Columns.Add("Name", typeof(string));
                dt.Columns.Add("Price", typeof(decimal));
    
               
                for (int i = 0; i < 10; i++)
                {
                    DataRow dr = dt.NewRow();
                    dr["ID"] = i;
                    dr["Name"] = "测试" + i.ToString();
                    dr["Price"] = i * 10;
                    dt.Rows.Add(dr);
    
                }
    
                return dt;
            }
        }
    }

    FastReport 设置

    添加好以上的代码,我们就可以运行看一下效果

    File 

    Save As :另存为,备份用,不多说

    Page Setup:页面设置,常用Paper:设置纸张规格 Margins:页边距

    其余三个很少用到。

    Printer Setup :打印机设置,这个界面我们可以在打印的时候默认不弹出,如果需要制定打印机或者其他信息,

    可以把 frt.PrintSettings.ShowDialog = false; 改成 frt.PrintSettings.ShowDialog = true;即可

    Edit

    此部分不常用,略

    View

    这个我们经常用得到。F4 显示属性,Data 数据源,Toolbars 显示工具栏

    Insert 

    插入一些特殊的格式或字体。其中Subreport 特别注意,我们有的时候需要添加侧边栏的时候用得到。BarCode 添加条形码或者二维码。

    Report

    Report 对应的内容 和点击左边Configure的效果是一样的,都可以添加数据区控制部分。

    左侧Configure

    点击Configure 我们可以添加我们需要的数据分区,页头页尾,行头行尾,数据区,分组等

    右侧Data

    此区域设置数据源,系统参数,合计,类型转换。

    DataSources 代表我们注册进来的数据表

    Variables 常用的 Row# 行号;Page# 当前页;TotalPages#总页数;

    Totals 设置合计,计数,平均数,最大值,最小值使用。

    Code

    添加一些我们特殊处理的代码,示例中我写了一个金额大小写转换的例子

     #region 人民币转换
        decimal amount=0;
        private static string StrTran(string s, string oldv, string newv)
        {
          return s.Replace(oldv, newv);
        }
    
        /// <summary>
        /// 转换大写人民币
        /// </summary>
        /// <param name="r"></param>
        /// <returns></returns>
        public static string RMBToString(decimal r)
        {
          decimal r1;
          string s1 = "零壹贰叁肆伍陆柒捌玖";
          string s2 = "分角元拾佰仟万拾佰仟亿拾佰仟万";
          string dx, s;
          r1 = r;
          dx = "";
          if (r1 < 0)
          {
            r1 *= -1;
            dx = "";
          }
          s = String.Format("{0:f0}", r1 * 100);
          int len = s.Length;
          for (int i = 0; i < len; i++)
          {
            dx = dx + s1.Substring(s[i] - '0', 1) + s2.Substring(len - i - 1, 1);
          }
          dx = StrTran(StrTran(StrTran(StrTran(StrTran(dx, "零仟", ""), "零佰", ""), "零拾", ""), "零角", ""), "零分", "");
          dx = StrTran(StrTran(StrTran(StrTran(StrTran(dx, "零零", ""), "零零", ""), "零亿", "亿"), "零万", ""), "零元", "");
          if (dx == "")
            return "零元整";
          else
            return StrTran(StrTran(StrTran(dx, "亿万", "亿零"), "零整", ""), "零零", "");
        }
        #endregion          
       

    FastReport 交流群

    554714044

  • 相关阅读:
    日期控件选择条件控制只能选择当前日期之前或当前日期之后
    记录一次ajax 429请求laravel api的错误
    如何配置Linux系统的IP地址?
    laravel 定时任务通过队列发送邮件
    ioutil.ReadFile 读取文件内容时为什么读取不到文件呢?open var2.go: no such file or directory
    swoole异步io操作
    PHP获取本周所有日期或者最近七天所有日期
    面试又给我问到MySQL索引,最全的一次整理
    Google资深工程师深度讲解Go语言基础语法(二)
    ps命令详解
  • 原文地址:https://www.cnblogs.com/wangyq2016/p/10132839.html
Copyright © 2020-2023  润新知