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=" ...
- swift 官方获取JSON 数据方法
var url = NSURL(string: "http://www.weather.com.cn/data/sk/101120501.html") var data = NSD ...
- ExportGrid Aspose.Cells.dll
using Aspose.Cells; using Aspose.Words; using System; using System.Collections; using System.Collect ...
- c++智能指针(2)
追加一个shared_ptr指针 #include <memory> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { ...
- SyntaxError: missing ; before statement
做分页功能,遇到了很坑的事情.前台一直报错:SyntaxError: missing ; before statement 最后发现解决办法是eval("("+s+")& ...
- CRC-32的原理和实现
/* crc32.c -- compute the CRC-32 of a data stream * Copyright (C) 1995-2002 Mark Adler * For conditi ...
- 导入mysql报错问题
今天数据导入报错:Got a packet bigger than‘max_allowed_packet’bytes的问题 2个解决方法: 1.临时修改:mysql>set global max ...
- innodb_log_buffer_size和innodb_buffer_pool_size参数说明
innodb_log_buffer_size Command-Line Format --innodb_log_buffer_size=# System Variable Name innodb ...
- 关于Code Review
为了保证代码质量,我们团队内部一直在推行Code Review.现在Code Review帮我们发现了很多代码的问题,提升了代码的可读性和质量,同时我们在Code Review上也花费了很多时间,有些 ...
- 2018.12.30 poj3734 Blocks(生成函数)
传送门 生成函数入门题. 按照题意构造函数: 对于限定必须是出现偶数次的颜色:1+x22!+x44!+...=ex+e−x21+\frac {x^2}{2!}+\frac {x^4}{4!}+...= ...