Winform項(xiàng)目中使用FastReport.Net報(bào)表控件_第1頁(yè)
Winform項(xiàng)目中使用FastReport.Net報(bào)表控件_第2頁(yè)
Winform項(xiàng)目中使用FastReport.Net報(bào)表控件_第3頁(yè)
Winform項(xiàng)目中使用FastReport.Net報(bào)表控件_第4頁(yè)
Winform項(xiàng)目中使用FastReport.Net報(bào)表控件_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第Winform項(xiàng)目中使用FastReport.Net報(bào)表控件目錄一、基本使用1、準(zhǔn)備工程和引入控件1、下載、安裝FastReport2、準(zhǔn)備工程、引入控件3、啟動(dòng)頁(yè)設(shè)計(jì)2、使用控件搭建窗體1、準(zhǔn)備一個(gè)FastReport報(bào)表2、引入Preview控件3、引入Design控件3、綁定數(shù)據(jù)1、數(shù)據(jù)庫(kù)準(zhǔn)備2、設(shè)計(jì)器數(shù)據(jù)獲取3、為Preview綁定數(shù)據(jù)二、用戶自定義報(bào)表,可保存到服務(wù)器和打開(kāi)??丶螺d

一、基本使用

1、準(zhǔn)備工程和引入控件

1、下載、安裝FastReport

這一步很簡(jiǎn)單,大家在其中文網(wǎng)站上下載最新版的demo版就可以了,直接安裝就可以

替換破解文件:

ReplaceC:\Windows\Microsoft.NET\assembly\GAC_MSIL\FastReport\v4.0_20__00000000000000000000000000\FastReport.dllwithcrackedone.

AssembliesfromfoldersFrameworkX.0isPublicKeyTokenremovedandstrongnameverificationdisabled.

安裝之后大家會(huì)發(fā)現(xiàn),VS里面什么都沒(méi)有,不像有些插件直接會(huì)在ToolBox里顯示,這里需要我們自己引入

2、準(zhǔn)備工程、引入控件

首先我們使用VS新建一個(gè)WinForm工程,這里我使用的是VisualStutio2015版本

接著我們先引入FastReport的核心dll依賴(lài),這些文件的目錄在FastReport安裝目錄下,分別是FastReport.dll,FastReport.Editor.dll,FastReport.Bars.dll。

你可以使用Framework4.0下的dll文件

接著我們需要3個(gè)窗體:MainForm,DesignForm,PreviewForm,其中MainForm為啟動(dòng)頁(yè)面

現(xiàn)在我們需要在ToolsBox中引入我們需要的FastReport控件,首先我們?cè)赥oolsBox中新建一個(gè)Item,命名為FastReport

然后右鍵剛剛新建的選項(xiàng)卡-選擇項(xiàng),打開(kāi)選擇控件的對(duì)話框

然后我們點(diǎn)擊左下角的瀏覽,選擇剛剛的FastReport.dll,然后確定,之后再確定,就會(huì)成功導(dǎo)入以下新的控件

3、啟動(dòng)頁(yè)設(shè)計(jì)

MainForm很簡(jiǎn)單,我們就放兩個(gè)按鈕,一個(gè)設(shè)計(jì),一個(gè)瀏覽,分別打開(kāi)兩個(gè)窗口

事件

privatevoidbtnDesign_Click(objectsender,EventArgse)

DesignFormdForm=newDesignForm();

dForm.Show();

privatevoidbtnPreview_Click(objectsender,EventArgse)

PreviewFormpForm=newPreviewForm();

pForm.Show();

}

2、使用控件搭建窗體

1、準(zhǔn)備一個(gè)FastReport報(bào)表

使用安裝時(shí)我們的設(shè)計(jì)工具設(shè)計(jì)一張最簡(jiǎn)單的報(bào)表

設(shè)計(jì)的報(bào)表,只有一個(gè)文字框

將這份報(bào)表保存到工程文件/bin/Debug/Report下

2、引入Preview控件

我們?cè)赑reviewForm中,將PreviewControl控件拖入窗體,將窗體拉大一點(diǎn),然后將控件的Dock設(shè)為Fill

然后我們F5測(cè)試一下看看是什么效果

我們發(fā)現(xiàn)控件被正確的顯示出來(lái)了

那怎么才能看到我們報(bào)表呢,我們需要用代碼來(lái)加載,我們雙擊Form,新建Load函數(shù),打下面的代碼

usingFastReport;//引入FastReport

usingSystem;

usingSystem.Windows.Forms;

namespaceReportDemo

publicpartialclassPreviewForm:Form

privateReportpReport;//新建一個(gè)私有變量

publicPreviewForm()

InitializeComponent();

privatevoidPreviewForm_Load(objectsender,EventArgse)

pReport=newReport();//實(shí)例化一個(gè)Report報(bào)表

StringreportFile="Report/report.frx";

pReport.Load(reportFile);//載入報(bào)表文件

pReport.Preview=previewControl1;//設(shè)置報(bào)表的Preview控件(這里的previewControl1就是我們之前拖進(jìn)去的那個(gè))

pReport.Prepare();//準(zhǔn)備

pReport.ShowPrepared();//顯示

}

我們?cè)貴5一下,載入了報(bào)表文件的樣子

這里我們已經(jīng)可以預(yù)覽我們的報(bào)表了但是在我們的需求中,用戶還需要自定義報(bào)表的內(nèi)容和格式呢,我們下一步就在實(shí)現(xiàn)報(bào)表設(shè)計(jì)器

3、引入Design控件

我們像Preview那樣把Design控件拖進(jìn)DesignForm,然后Dock設(shè)為Fill

然后我們來(lái)寫(xiě)怎么樣吧設(shè)計(jì)器綁定Report文件,雙擊新建Load函數(shù),引入FastReport,新建一個(gè)private變量

usingFastReport;

usingSystem;

usingSystem.Windows.Forms;

namespaceReportDemo

publicpartialclassDesignForm:Form

privateReportdReport;

publicDesignForm()

InitializeComponent();

privatevoidDesignForm_Load(objectsender,EventArgse)

dReport=newReport();

stringreportFile="Report/report.frx";

dReport.Load(reportFile);

this.designerControl1.Report=dReport;

dReport.Prepare();

dReport.Design();

}

我們F5一下

成功!

3、綁定數(shù)據(jù)

1、數(shù)據(jù)庫(kù)準(zhǔn)備

我們使用VisualStudio自帶的mdf文件數(shù)據(jù)庫(kù),首先我們?cè)诠こ讨袆?chuàng)建一個(gè)文件夾APP_DATA,在此文件夾中創(chuàng)建一個(gè)mdf文件

然后我們可以在服務(wù)器資源管理器中看到我們的數(shù)據(jù)庫(kù)

然后我們右鍵表新建一個(gè)表

CREATETABLE[dbo].[T_students]

[Id]INTNOTNULLPRIMARYKEYIDENTITY,

[no]NCHAR(50)NULL,

[name]NCHAR(50)NULL,

[school]NCHAR(50)NULL,

[class]NCHAR(50)NULL

)

然后在設(shè)計(jì)器左上角點(diǎn)擊更新按鈕,在彈出的窗口中點(diǎn)擊更新數(shù)據(jù)庫(kù)

更狀態(tài)全部打鉤之后,表就創(chuàng)建好了,我們刷新服務(wù)器資源管理器,然后打開(kāi)表數(shù)據(jù),添加一些數(shù)據(jù)進(jìn)去

ok我們現(xiàn)在在服務(wù)器資源管理器里面選擇mdf文件,在屬性列表里,找到連接字符串,拷貝一份出來(lái),等會(huì)需要用的到

DataSource=(LocalDB)\v11.0;AttachDbFilename="D:\Personal\Documents\VisualStudio2012\Projects\WindowsFormsApplication3\WindowsFormsApplication3\APP_DATA\Database1.mdf";IntegratedSecurity=True

2、設(shè)計(jì)器數(shù)據(jù)獲取

我們?cè)贒esignForm.cs里,寫(xiě)一個(gè)方法getData()

privateDataSetgetData()

StringconnStr=@"DataSource=(LocalDB)\v11.0;AttachDbFilename=D:\Personal\Documents\VisualStudio2012\Projects\WindowsFormsApplication3\WindowsFormsApplication3\APP_DATA\Database1.mdf;IntegratedSecurity=True";

SqlConnectionconn=newSqlConnection(connStr);

conn.Open();

StringsqlStr="SELECT*FROMT_students";

SqlCommandcomm=newSqlCommand();

comm.CommandText=sqlStr;

comm.CommandType=CommandType.Text;

comm.Connection=conn;

DataSetds=newDataSet();

SqlDataAdapteradapter=newSqlDataAdapter(comm);

adapter.Fill(ds,"學(xué)生信息");

conn.Close();

returnds;

}

然后我們?cè)贔orm_Load方法里綁定數(shù)據(jù)集

privatevoidDesignForm_Load(objectsender,EventArgse)

dReport=newReport();

stringreportFile="Report/report.frx";

dReport.Load(reportFile);

this.designerControl1.Report=dReport;

DataSetds=newDataSet();

ds=getData();

dReport.RegisterData(ds,"學(xué)生信息");

dReport.Prepare();

dReport.Design();

}

我們F5一下,在設(shè)計(jì)窗口下,在[數(shù)據(jù)]-[選擇數(shù)據(jù)源]中,就能看到我們綁定的數(shù)據(jù)了

我們?cè)O(shè)計(jì)一個(gè)表格,把我們的數(shù)據(jù)放進(jìn)去

我們可以預(yù)覽一下,然后保存

3、為Preview綁定數(shù)據(jù)

現(xiàn)在我們用同樣的方法為Preview綁定數(shù)據(jù),getData()方法一致,可以直接復(fù)制過(guò)來(lái)

privatevoidPreviewForm_Load(objectsender,EventArgse)

pReport=newReport();//實(shí)例化一個(gè)Report報(bào)表

StringreportFile="Report/report.frx";

pReport.Load(reportFile);//載入報(bào)表文件

pReport.Preview=previewControl1;//設(shè)置報(bào)表的Preview控件(這里的previewControl1就是我們之前拖進(jìn)去的那個(gè))

DataSetds=newDataSet();

ds=getData();

pReport.RegisterData(ds,"學(xué)生信息");

pReport.Prepare();//準(zhǔn)備

pReport.ShowPrepared();//顯示

}

我們測(cè)試一下

二、用戶自定義報(bào)表,可保存到服務(wù)器和打開(kāi)。

摘自官方Demo:

調(diào)用設(shè)計(jì)器界面

首頁(yè)代碼

publicpartialclassForm1:Form

privateDataSetFReportsDs;

privateDataTableReportsTable

get{returnFReportsDs.Tables[0];}

publicForm1()

InitializeComponent();

privatevoidInitializeDatabase()

FReportsDs=newDataSet();

FReportsDs.ReadXml(Config.ApplicationFolder+@"..\..\database.xml");

privatevoidFinalizeDatabase()

FReportsDs.WriteXml(Config.ApplicationFolder+@"..\..\database.xml",XmlWriteMode.WriteSchema);

privatevoidWireupDesignerEvents()

Config.DesignerSettings.CustomOpenDialog+=newOpenSaveDialogEventHandler(DesignerSettings_CustomOpenDialog);

Config.DesignerSettings.CustomOpenReport+=newOpenSaveReportEventHandler(DesignerSettings_CustomOpenReport);

Config.DesignerSettings.CustomSaveDialog+=newOpenSaveDialogEventHandler(DesignerSettings_CustomSaveDialog);

Config.DesignerSettings.CustomSaveReport+=newOpenSaveReportEventHandler(DesignerSettings_CustomSaveReport);

privatevoidDesignReport()

using(Reportreport=newReport())

report.LoadBaseReport+=newCustomLoadEventHandler(report_LoadBaseReport);

report.Design();

//thiseventisfiredwhenloadingabasepartofaninheritedreport.

privatevoidreport_LoadBaseReport(objectsender,CustomLoadEventArgse)

OpenReport(e.Report,e.FileName);

//thiseventisfiredwhentheuserpressthe"Openfile"button

privatevoidDesignerSettings_CustomOpenDialog(objectsender,OpenSaveDialogEventArgse)

using(OpenDialogFormform=newOpenDialogForm())

//passthereportstabletodisplayalistofreports

form.ReportsTable=ReportsTable;

//showdialog

e.Cancel=form.ShowDialog()!=DialogResult.OK;

//returntheselectedreportinthee.FileName

e.FileName=form.ReportName;

//thiseventisfiredwhenreportneedstobeloaded

privatevoidDesignerSettings_CustomOpenReport(objectsender,OpenSaveReportEventArgse)

OpenReport(e.Report,e.FileName);

//thiseventisfiredwhentheuserpressthe"Savefile"buttontosaveuntitledreport,

//or"Savefileas"button

privatevoidDesignerSettings_CustomSaveDialog(objectsender,OpenSaveDialogEventArgse)

using(SaveDialogFormform=newSaveDialogForm())

//showdialog

e.Cancel=form.ShowDialog()!=DialogResult.OK;

//returnthereportnameinthee.FileName

e.FileName=form.ReportName;

//thiseventisfiredwhenreportneedstobesaved

privatevoidDesignerSettings_CustomSaveReport(objectsender,OpenSaveReportEventArgse)

SaveReport(e.Report,e.FileName);

privatevoidOpenReport(Reportreport,stringreportName)

//findthedatarowwithspecifiedReportName

foreach(DataRowrowinReportsTable.Rows)

if((string)row["ReportName"]==reportName)

//loadthereportfromastreamcontainedinthe"ReportStream"datacolumn

byte[]reportBytes=(byte[])row["ReportStream"];

using(MemoryStreamstream=newMemoryStream(reportBytes))

report.Load(stream);

return;

privatevoidSaveReport(Reportreport,stringreportName)

//findthedatarowwithspecifiedReportName

DataRowreportRow=null;

foreach(DataRowrowinReportsTable.Rows)

if((string)row["ReportName"]==reportName)

reportRow=row;

break;

//noexistingrowfound,appendnewone

if(reportRow==null)

reportRow=ReportsTable.NewRow();

ReportsTable.Rows.Add(reportRow);

//savethereporttoastream,thenputbyte[]arraytothedatarow

using(MemoryStreamstream=newMemoryStream())

report.Save(stream);

reportRow["ReportName"]=reportName;

reportRow["ReportStream"]=stream.ToArray();

privatevoidForm1_Load(objectsender,EventArgse)

InitializeDatabase();

WireupDesignerEvents();

privatevoidForm1_FormClosed(objectsender,FormClosedEventArgse)

FinalizeDatabase();

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論