前言

这两天群里一直有群友问一些关于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. 转:Struts2返回JSON数据的具体应用范例

    http://blog.csdn.net/jspamd/article/details/8810109 纠错: <result type="json" name=" ...

  2. swift 官方获取JSON 数据方法

    var url = NSURL(string: "http://www.weather.com.cn/data/sk/101120501.html") var data = NSD ...

  3. ExportGrid Aspose.Cells.dll

    using Aspose.Cells; using Aspose.Words; using System; using System.Collections; using System.Collect ...

  4. c++智能指针(2)

    追加一个shared_ptr指针 #include <memory> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { ...

  5. SyntaxError: missing ; before statement

    做分页功能,遇到了很坑的事情.前台一直报错:SyntaxError: missing ; before statement 最后发现解决办法是eval("("+s+")& ...

  6. CRC-32的原理和实现

    /* crc32.c -- compute the CRC-32 of a data stream * Copyright (C) 1995-2002 Mark Adler * For conditi ...

  7. 导入mysql报错问题

    今天数据导入报错:Got a packet bigger than‘max_allowed_packet’bytes的问题 2个解决方法: 1.临时修改:mysql>set global max ...

  8. innodb_log_buffer_size和innodb_buffer_pool_size参数说明

    innodb_log_buffer_size Command-Line Format --innodb_log_buffer_size=# System Variable Name    innodb ...

  9. 关于Code Review

    为了保证代码质量,我们团队内部一直在推行Code Review.现在Code Review帮我们发现了很多代码的问题,提升了代码的可读性和质量,同时我们在Code Review上也花费了很多时间,有些 ...

  10. 2018.12.30 poj3734 Blocks(生成函数)

    传送门 生成函数入门题. 按照题意构造函数: 对于限定必须是出现偶数次的颜色:1+x22!+x44!+...=ex+e−x21+\frac {x^2}{2!}+\frac {x^4}{4!}+...= ...