前言

这两天群里一直有群友问一些关于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 = ; i < ; i++)
{
DataRow dr = dt.NewRow();
dr["ID"] = i;
dr["Name"] = "测试" + i.ToString();
dr["Price"] = i * ;
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=;
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 < )
{
r1 *= -;
dx = "负";
}
s = String.Format("{0:f0}", r1 * );
int len = s.Length;
for (int i = ; i < len; i++)
{
dx = dx + s1.Substring(s[i] - '', ) + s2.Substring(len - i - , );
}
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版)的更多相关文章

  1. iTunes制作iPhone手机铃声方法(mac版2017年4月更新)

    iTunes制作iPhone手机铃声方法(mac版2017年4月更新)   跟之前百度出来的不同,我自己使用后写的.     1.首先下载好你需要制作铃声的mp3文件,这里我放在桌面.       2 ...

  2. 推荐学习《组织与管理研究的实证方法(第2版)》中文PDF

    在写文章论文时,会涉及到观点论证,需要掌握一些实证方法. 建议学习<组织与管理研究的实证方法(第2版)>,对管理研究中涉及的方法进行了介绍,例如实验室研究,二手数据的研究,实地研究等,这对 ...

  3. 3D游戏引擎设计 实时计算机图形学的应用方法 第2版 pdf 带索引书签目录

    3D游戏引擎设计  实时计算机图形学的应用方法  第2版 目录 第1章 概述1.1 图形硬件和游戏发展史1.2 本书版本与软件发展史1.3 章节导读 第2章 图形系统2.1 基础知识2.1.1 坐标系 ...

  4. 电子设备的使用方法-第5版(佳明智能腕表小米手机联想轻薄笔记本群晖存储)我的腾讯QQ电子邮箱地址是 595076941@qq.com - 2021年9月5日

      电子设备的使用方法-第5版   (佳明智能腕表小米手机联想轻薄笔记本群晖存储) 2021年9月5日 我的腾讯QQ电子邮箱地址是  595076941@qq.com 前言 大家好,我叫徐晓亮,今天我 ...

  5. FusionChart 水印破解方法(代码版)

    网上一直找不到有关去除水印的方法! 正好做项目要用到这个鬼东西,折腾了一天,总算破解成功,把方法告诉大家. 先看下破解前的效果. 这是个很烦人的东西,而且有一个更加让人烦人的地方, 就是根本无法买!为 ...

  6. C++STL内存管理方法(g++版)

    STL作为C++的经典作品,一直备受人们关注.本文主要介绍STL的内存管理策略. 早期的STL内存管理 第一次接触STL源码是看侯捷先生的<STL源码剖析>,此书通俗易懂,剖析透彻,是极佳 ...

  7. VC2010的破解方法(针对旗舰版)

    VS2010 正式版破解方法详解 全球开发者最为瞩目的Visual Studio 2010开发工具在4月12日正式发布,现为大家制作一个简单的破解教程有两种方法,操作不一样,原都一样(针对旗舰版,其他 ...

  8. Python、PyCharm的安装及使用方法(Mac版)

    上周跟朋友喝咖啡时聊起我想学Python,她恰好也有这个打算,顺便推荐了一本书<编程小白的第1本Python入门书>,我推送到Kindle后,随手翻看了下,用语平实,简洁易懂. 之前在R语 ...

  9. 基于编辑距离来判断词语相似度方法(scala版)

    词语相似性比较,最容易想到的就是编辑距离,也叫做Levenshtein Distance算法.在Python中是有现成的模块可以帮助做这个的,不过代码也很简单,我这边就用scala实现了一版. 编辑距 ...

随机推荐

  1. Python之路(第五篇) Python基本数据类型集合、格式化、函数

    一.变量总结 1.1 变量定义 记录某种状态或者数值,并用某个名称代表这个数值或状态. 1.2 变量在内存中的表现形式 Python 中一切皆为对象,数字是对象,列表是对象,函数也是对象,任何东西都是 ...

  2. mysql 设置用户并授权

    一, 创建用户: 命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说明:username - 你将创建的用户名, host - 指 ...

  3. Notepad++语言格式设置,自定义扩展名关联文件格式

    简单粗暴--直接上图

  4. 解决textarea 输出有空格问题

    我们在使用textarea标签输出的时候,经常会出现前后都有空格.使用trim()处理也不行. 这个原因是因为 我们在编写textarea标签对的时候使用了换行. 解决方法:就是<textare ...

  5. UVA 10405 Longest Common Subsequence

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=16&p ...

  6. Tomcat优化方案

    摘自网络: 调优方案分类: 1,外部环境调优 2,自身调优 --------------------------------------------------- 外部环境调优: 1, JAVA虚拟机 ...

  7. 2019.01.21 bzoj2441: [中山市选2011]小W的问题(树状数组+权值线段树)

    传送门 数据结构优化计数菜题. 题意简述:给nnn个点问有多少个www型. www型的定义: 由5个不同的点组成,满足x1<x2<x3<x4<x5,x3>x1>x2 ...

  8. 2018.06.26 Dominator Tree--支配树

    在学习支配树之前,请保证已经会写lca(tarian求法) 简介 支配树是什么?支配树能干什么? 对于一个DAG" role="presentation" style=& ...

  9. C++中各种时间类型的转换(包括MFC中的时间类型)

    平时写代码会经常遇到时间类型转换的问题,如时间戳转为格式化时间,或者反过来等,时间类型有的为time_t,还有FILETIME一堆,在这里记录下他们之间是如何转换的. 时间类型及其意义 FILETIM ...

  10. 2.Early Education of Children 儿童的早期教育

    2.Early Education of Children 儿童的早期教育 (1) In bringing up children,every parent watches eagerly the c ...