本文介绍了在Winform项目中使用FastReport.Net报表控件的方法,并通过示例代码进行了详细介绍。对大家的学习或者工作都有一定的参考价值,有需要的朋友可以参考一下。
目录
一、基本使用1。准备项目和导入控制1。下载并安装Fastport 2。准备项目。进口管制3。开始页面设计2。使用控件构建表单1。准备Fastport报告2。导入预览控件3。导入设计控制3。绑定数据1。准备数据库2。获取设计者数据3。为预览2绑定数据。用户定义的。控制下载
一、基本使用
1、准备工程和引入控件
1、下载、安装FastReport
这一步很简单。你可以从它的中文网站下载最新版本的demo,然后直接安装。
打破文件:
替换C:\Windows\Microsoft。NET \ assembly \ GAC _ MSIL \ fast report \ v 4.0 _ 2019 . 1 . 5 . 0 _ _ 00000000000000000 \ fast report . dll带破解的一个。
文件夹框架X.0中的程序集被PublicKeyToken移除,强名称验证被禁用。
安装后你会发现VS里什么都没有,不像有些插件会直接显示在工具箱里,需要我们自己去介绍。
2、准备工程、引入控件
首先,我们使用VS创建一个新的WinForm项目。这里我用的是VisualStutio2015版本。
然后我们先介绍一下FastReport的核心dll依赖。这些文件的目录是FastReport安装目录下的FastReport、fastreport.editor.dll、fastreport.bars.dll。
可以在Framework 4.0下使用dll文件。
然后我们需要三个表单:MainForm、DesignForm和PreviewForm,其中MainForm是启动页面。
现在我们需要将我们需要的FastReport控件引入工具箱。首先,我们在工具箱中创建一个新项目,并将其命名为FastReport。
然后,右键单击新创建的选项卡-选择项目以打开用于选择控件的对话框。
然后我们点击左下角的浏览,选择刚才的FastReport.dll,然后确认,再确认,下面的新控件就导入成功了。
3、启动页设计
MainForm很简单,我们只是放了两个按钮,一个设计,一个浏览,分别打开两个窗口。
事件
私有void btnDesign_Click(对象发送方,EventArgs e)
{
design form d form=new design form();
dForm。show();
}
私有void btnPreview_Click(对象发送方,EventArgs e)
{
preview form p form=new preview form();
pForm。show();
}
2、使用控件搭建窗体
1、准备一个FastReport报表
使用我们的设计工具在安装过程中设计最简单的报告。
该报表设计为只有一个文本框。
将此报告保存到项目文件/bin/Debug/Report中。
2、引入Preview控件
在PreviewForm中,我们将PreviewControl拖动到表单中,将表单放大一点,然后将控件的Dock设置为Fill。
那我们F5测试一下,看看是什么效果。
我们发现控件显示正确。
我们怎样才能看到我们的报告?我们需要使用代码来加载它。我们双击Form,创建一个新的load函数,并键入以下代码。
使用FastReport//介绍FastReport
使用系统;
使用系统。Windows . Forms
命名空间报告演示
{
公共分部类预览表单:表单
{
私人报告预报告;//创建新的私有变量
公共预览表单()
{
initialize component();
}
private void PreviewForm_Load(对象发送方,EventArgs e)
{
pReport=new Report();//实例化报表Report
string Report file=' Report/Report . frx ';
预端口。load(report file);//加载报告文件
预端口。Preview=previewControl1//设置报表的预览控件(这里的previewControl1就是我们之前拖入的那个)
预端口。prepare();//准备
预端口。show prepared();//显示
}
}
}
让我们再次按F5并加载报告文件。
我们可以在这里预览我们的报告,但是在我们的需求中,用户需要定制报告的内容和格式。我们的下一步是实现报告设计器。
3、引入Design控件
我们像试映那样把设计控件拖进设计表单,然后码头设为充满
然后我们来写怎么样吧设计器绑定报告文件,双击新建负荷函数,引入快速报告,新建一个私人的变量
使用快速报告
使用系统;
使用系统窗户。形式
命名空间报告演示
{
公共分部类设计表单:表单
{
私人报告德雷波特
公共设计表单()
{
初始化组件();
}
私有void DesignForm_Load(对象发送方,EventArgs e)
{
dReport=new Report();
字符串报告文件=' Report/Report。frx ';
德雷波特加载(报表文件);
这个。设计器控件1。报表=d报表;
德雷波特. prepare();
德雷波特. design();
}
}
}
我们F5一下
成功!
3、绑定数据
1、数据库准备
我们使用VisualStudio自带的总配线架文件数据库,首先我们在工程中创建一个文件夹APP_DATA,在此文件夹中创建一个总配线架文件
然后我们可以在服务器资源管理器中看到我们的数据库
然后我们右键表新建一个表
创建表[dbo].[T _学生]
(
[Id] INT不为空主键标识,
[否] NCHAR(50)空,
[姓名] NCHAR(50) NULL,
[学校] NCHAR(50) NULL,
NCHAR(50)空
)
然后在设计器左上角点击更新按钮,在弹出的窗口中点击更新数据库
更状态全部打钩之后,表就创建好了,我们刷新服务器资源管理器,然后打开表数据,添加一些数据进去
好的我们现在在服务器资源管理器里面选择总配线架文件,在属性列表里,找到连接字符串,拷贝一份出来,等会需要用的到
数据源=(本地数据库)\ v 11.0AttachDbFilename=' D:\ Personal \ Documents \ Visual Studio 2012 \ Projects \ windows窗体应用程序3 \ windows窗体应用程序3 \ APP _ DATA \ database 1。MDF ';集成安全性=真
2、设计器数据获取
我们在设计表单。铯里,写一个方法getData()
私有数据集getData()
{
字符串连接字符串=@ '数据源=(本地数据库)\ v 11.0AttachDbFilename=D:\ Personal \ Documents \ Visual Studio 2012 \ Projects \ windows窗体应用程序3 \ windows窗体应用程序3 \ APP _ DATA \ database 1。中纤板;集成安全性=True ';
SqlConnection conn=new SqlConnection(connStr);
conn . Open();
string sqlStr=' SELECT * FROM T _ students ';
SqlCommand comm=new SqlCommand();
comm . CommandText=sqlStr
comm.CommandType=CommandType .文本;
通信连接=连接;
数据集ds=新数据集();
sqldata adapter适配器=新的sqldata适配器(comm);
适配器。填充(ds,学生信息');
conn . Close();
返回ds;
}
然后我们在表单_加载方法里绑定数据集
私有void DesignForm_Load(对象发送方,EventArgs e)
{
dReport=new Report();
字符串报告文件=' Report/Report。frx ';
德雷波特加载(报表文件);
这个。设计器控件1。报表=d报表;
数据集ds=新数据集();
ds=get data();
德雷波特。注册数据(ds,学生信息');
德雷波特. prepare();
德雷波特. design();
}
我们F5一下,在设计窗口下,在[数据]-[选择数据源]中,就能看到我们绑定的数据了
我们设计一个表格,把我们的数据放进去
我们可以预览一下,然后保存
3、为Preview绑定数据
现在我们用同样的方法为试映绑定数据,getData()方法一致,可以直接复制过来
私有void PreviewForm_Load(对象发送方,EventArgs e)
{
pReport=new Report();//实例化一个报告报表
字符串报告文件=' Report/Report。frx ';
预端口加载(报表文件);//载入报表文件
预端口Preview=previewControl1//设置报表的试映控件(这里的预览控件一就是我们之前拖进去的那个)
数据集ds=新数据集();
ds=get data();
预端口。注册数据(ds,学生信息');
预端口. prepare();//准备
预端口show prepared();//显示
}
我们测试一下
二、用户自定义报表,可保存到服务器和打开。
摘自官方演示:
调用设计器界面
首页代码
公共分部类表单1:表单
{
私有数据集FReportsDs
私有数据表报表表
{
获取{ return FReportsDs .表[0];}
}
公共表单1()
{
初始化组件();
}
私有void初始化数据库()
{
FReportsDs=new DataSet();
报告.ReadXml(配置。'应用程序文件夹@ '.\.\数据库。XML’);
}
私有void FinalizeDatabase()
{
报告.WriteXml(配置。'应用程序文件夹@ '.\.\database.xml ',XmlWriteMode .写模式);
}
私有void WireupDesignerEvents()
{
配置设计师设置。自定义打开对话框=new OpenSaveDialogEventHandler(设计器设置_自定义打开对话框);
配置设计师设置。自定义打开报表=new OpenSaveReportEventHandler(设计器设置_自定义打开报表);
配置设计师设置。customsavedialogeventhandler(designer settings _ CustomSaveDialog);
配置设计师设置。CustomSaveReport=new OpenSaveReportEventHandler(designer settings _ CustomSaveReport);
}
私有空的设计报告()
{
使用(报告报告=新报告())
{
报告loadbase report=new CustomLoadEventHandler(report _ loadbase report);
报告. design();
}
}
//加载继承报表的基本部分时激发此事件。
私有void report_LoadBaseReport(对象发送方,CustomLoadEventArgs e)
{
OpenReport(电子报告,电子文件名);
}
//当用户按下"打开文件"按钮时触发此事件
私有void designer设置_自定义打开对话框(对象发送方OpenSaveDialogEventArgs e)
{
using(open dialog form form=new open dialog form())
{
//传递报告表以显示报告列表
形式ReportsTable=ReportsTable
//显示对话框
e.取消=形式ShowDialog()!=对话结果.好的;
//在e .文件名中返回选定的报告
e.文件名=格式ReportName
}
}
//需要加载报告时触发此事件
私有void designer设置_自定义打开报表(对象发送方OpenSaveReportEventArgs e)
{
OpenReport(电子报告,电子文件名);
}
//当用户按"保存文件"按钮保存无标题报告时触发此事件,
//或"文件另存为"按钮
私有void设计器设置_ CustomSaveDialog(对象发送方OpenSaveDialogEventArgs e)
{
using(SaveDialogForm form=new SaveDialogForm())
{
//显示对话框
e.取消=形式ShowDialog()!=对话结果.好的;
//在e .文件名中返回报告名称
e.文件名=格式ReportName
}
}
//需要保存报告时触发此事件
私有void设计器设置_ CustomSaveReport(对象发送方OpenSaveReportEventArgs e)
{
保存报告(电子报告,电子文件名);
}
私有void OpenReport(报告报告,字符串报告名称)
{
//查找具有指定ReportName的数据行
foreach(报表表中的数据行行。行)
{
如果(字符串)行['报告名']==报告名)
{
//从"报告流"数据列中包含的流加载报告
byte[]报表字节=(byte[])行['报表流'];
使用(内存流stream=新内存流(报告字节))
{
报告。负载(流);
}
返回;
}
}
}
私有作废保存报告(报告报告,字符串报告名称)
{
//查找具有指定ReportName的数据行
DataRow reportRow=null
foreach(报表表中的数据行行。行)
{
如果(字符串)行['报告名']==报告名)
{
reportRow=row
打破;
}
}
//找不到现有行,追加新行
if (reportRow==null)
{
reportRow=ReportsTable .NewRow();
报告表格100行。add(reportRow);
}
//将报告保存到流中,然后将字节[]数组放入数据行中
使用(内存流stream=新内存流())
{
报告。保存(流);
报告行['报告名称']=报告名称;
报告行['报告流']=流.to array();
}
}
私有void Form1_Load(对象发送方,EventArgs e)
{
InitializeDatabase();
WireupDesignerEvents();
}
私有void Form1_FormClosed(对象发送方FormClosedEventArgs e)
{
完成数据库();
}
私有void btnDesign_Click(对象发送方,EventArgs e)
{
设计报告();
}
}
打开对话框:
公共分部类OpenDialogForm:表单
{
公共数据表报表
{
设置
{
//用报告的名称填充列表框
foreach(数据行值中的行。行)
{
lbxReports .项目。添加(行['报告名称']);
}
}
}
公共字符串ReportName
{
得到
{
返回(字符串)lbxReports .选择编辑项目;
}
}
公共OpenDialogForm()
{
初始化组件();
}
私有void lbx reports _ selectedindex已更改(对象发送方,EventArgs e)
{
btnOK .启用=!字符串IsNullOrEmpty(报表名称);
}
}
保存对话框
公共分部类SaveDialogForm:表单
{
公共字符串ReportName
{
得到
{
返回tbReportName .文本;
}
}
公共SaveDialogForm()
{
初始化组件();
}
私有void tbReportName _ text已更改(对象发送方,事件参数e)
{
btnOK .启用=!字符串IsNullOrEmpty(报表名称);
}
}
参考:使用报告ReportResourceString在数据库中保存快速报告。网报表
https://www.jb51.net/article/250713.htm
控件下载
点此下载
到此这篇关于Winform项目中使用快速报告。网报表控件的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。