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

 

posted @ 2018-12-17 18:02  wangyq2016  阅读(7735)  评论(0编辑  收藏  举报