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 = ; 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版)的更多相关文章
- iTunes制作iPhone手机铃声方法(mac版2017年4月更新)
iTunes制作iPhone手机铃声方法(mac版2017年4月更新) 跟之前百度出来的不同,我自己使用后写的. 1.首先下载好你需要制作铃声的mp3文件,这里我放在桌面. 2 ...
- 推荐学习《组织与管理研究的实证方法(第2版)》中文PDF
在写文章论文时,会涉及到观点论证,需要掌握一些实证方法. 建议学习<组织与管理研究的实证方法(第2版)>,对管理研究中涉及的方法进行了介绍,例如实验室研究,二手数据的研究,实地研究等,这对 ...
- 3D游戏引擎设计 实时计算机图形学的应用方法 第2版 pdf 带索引书签目录
3D游戏引擎设计 实时计算机图形学的应用方法 第2版 目录 第1章 概述1.1 图形硬件和游戏发展史1.2 本书版本与软件发展史1.3 章节导读 第2章 图形系统2.1 基础知识2.1.1 坐标系 ...
- 电子设备的使用方法-第5版(佳明智能腕表小米手机联想轻薄笔记本群晖存储)我的腾讯QQ电子邮箱地址是 595076941@qq.com - 2021年9月5日
电子设备的使用方法-第5版 (佳明智能腕表小米手机联想轻薄笔记本群晖存储) 2021年9月5日 我的腾讯QQ电子邮箱地址是 595076941@qq.com 前言 大家好,我叫徐晓亮,今天我 ...
- FusionChart 水印破解方法(代码版)
网上一直找不到有关去除水印的方法! 正好做项目要用到这个鬼东西,折腾了一天,总算破解成功,把方法告诉大家. 先看下破解前的效果. 这是个很烦人的东西,而且有一个更加让人烦人的地方, 就是根本无法买!为 ...
- C++STL内存管理方法(g++版)
STL作为C++的经典作品,一直备受人们关注.本文主要介绍STL的内存管理策略. 早期的STL内存管理 第一次接触STL源码是看侯捷先生的<STL源码剖析>,此书通俗易懂,剖析透彻,是极佳 ...
- VC2010的破解方法(针对旗舰版)
VS2010 正式版破解方法详解 全球开发者最为瞩目的Visual Studio 2010开发工具在4月12日正式发布,现为大家制作一个简单的破解教程有两种方法,操作不一样,原都一样(针对旗舰版,其他 ...
- Python、PyCharm的安装及使用方法(Mac版)
上周跟朋友喝咖啡时聊起我想学Python,她恰好也有这个打算,顺便推荐了一本书<编程小白的第1本Python入门书>,我推送到Kindle后,随手翻看了下,用语平实,简洁易懂. 之前在R语 ...
- 基于编辑距离来判断词语相似度方法(scala版)
词语相似性比较,最容易想到的就是编辑距离,也叫做Levenshtein Distance算法.在Python中是有现成的模块可以帮助做这个的,不过代码也很简单,我这边就用scala实现了一版. 编辑距 ...
随机推荐
- 转:Struts2返回JSON数据的具体应用范例
http://blog.csdn.net/jspamd/article/details/8810109 纠错: <result type="json" name=" ...
- walsh矩阵
矩阵A(1) 1 矩阵A(2) 1 1 1 -1 矩阵A(2n) 由上一级矩阵组合,即用上一级矩阵的一行生成本级矩阵的一行. 生成规则是 A(2n)[k] = { A(n)[k], A(n)[k] ...
- windows中执行celery beat任务
由于最新的celery4.2不支持windows系统,因此按照网上的建议安装了3.1.25版.按照官网的说明使用 app.conf.beat_schedule = { 'add-every-30-se ...
- 2019.01.23 hdu3377 Plan(轮廓线dp)
传送门 题意简述:给一个n*m的带权矩阵,求从左上角走到右下角的最大分数,每个格子只能经过最多一次,n,m≤9n,m\le9n,m≤9. 思路: 考虑轮廓线dpdpdp,但这道题并没有出现回路的限制因 ...
- poj-2777(区间线段树,求种类数模板)
题目链接:http://poj.org/problem?id=2777 参考文章:https://blog.csdn.net/heucodesong/article/details/81038360 ...
- Amaze UI 云适配
Amaze UI 云适配 陈本峰 一中,中科大 香港科大
- idea的maven项目不知道为啥下载不下来jar包,看本地仓库只是下载了一下xml文件,没有jar包问题
确认了私服上的jar包能直接下载下来,而且jar包是正常的:但是就是不能通过idea下载,通过idea下载到本地仓库的只生成了.lastUpdated文件,检查了setting.xml文件.网络,私服 ...
- 学习致用九---centos7.2+vim vundle
目的,安装vim插件,vundle Vundle是Vim的插件管理插件 YouCompleteMe 简称 YCM 1.安装vundle: git clone https://github.com/ ...
- verilog中的多维数组
reg arrayb [7:0] [0:255] ;//二维数组.
- Hadoop-2.8.0分布式安装手册
目录 目录 1 1. 前言 3 2. 特性介绍 3 3. 部署 5 3.1. 机器列表 5 3.2. 主机名 5 3.2.1. 临时修改主机名 6 3.2.2. 永久修改主机名 6 3.3. 免密码登 ...