FastReport使用方法(C/S版)

Posted wangyq2016

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于FastReport使用方法(C/S版)的主要内容,如果未能解决你的问题,请参考以下文章

Fastreport生成WEB报表

Fastreport.net编辑问题

[vscode]--HTML代码片段(基础版,reactvuejquery)

使用fastreport以代码方式创建报表

FastReport教程将数据字段添加到矩阵行的方法

fastreport richtext怎样改变字体大小