




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)民消防安全知識(shí)培訓(xùn)課件
- 護(hù)理文獻(xiàn)月評(píng)價(jià)匯報(bào)
- 2025年高等教育法學(xué)類(lèi)自考-00217刑事訴訟原理與實(shí)務(wù)歷年參考題庫(kù)含答案解析(5套典型考題)
- 2025年高等教育文學(xué)類(lèi)自考-00815西方文論選讀歷年參考題庫(kù)含答案解析(5套典型考題)
- 2025年高等教育文學(xué)類(lèi)自考-00641中外廣告史歷年參考題庫(kù)含答案解析(5套典型考題)
- 護(hù)理科室發(fā)展匯報(bào)
- 2025年高等教育工學(xué)類(lèi)自考-02405道路勘測(cè)設(shè)計(jì)歷年參考題庫(kù)含答案解析(5套典型考題)
- 2025年高等教育工學(xué)類(lèi)自考-02120數(shù)據(jù)庫(kù)及其應(yīng)用歷年參考題庫(kù)含答案解析(5套典型考題)
- 2025年鉗型表項(xiàng)目合作計(jì)劃書(shū)
- 2025年高等教育醫(yī)學(xué)類(lèi)自考-07853儀器分析(三)歷年參考題庫(kù)含答案解析(5套典型考題)
- 福建省永春一中、培元中學(xué)、季延中學(xué)、石光中學(xué)四校2024屆高一數(shù)學(xué)第一學(xué)期期末經(jīng)典模擬試題含解析
- 【波司登羽絨服企業(yè)研發(fā)支出的會(huì)計(jì)處理】9000字論文
- 營(yíng)養(yǎng)風(fēng)險(xiǎn)篩查(NRS2002)解讀
- 病歷書(shū)寫(xiě)基本規(guī)范國(guó)家衛(wèi)健委2021年
- DB43-T 140-2023 造林技術(shù)規(guī)程
- 應(yīng)用PDCA管理工具提高病案歸檔率
- 過(guò)敏性休克病例討論
- 考研英語(yǔ)閱讀理解精讀100篇
- GA/T 1343-2016防暴升降式阻車(chē)路障
- 對(duì)蝦產(chǎn)品質(zhì)量分級(jí)要素及評(píng)價(jià)技術(shù)課件
- 六年級(jí)解方程練習(xí)題02177
評(píng)論
0/150
提交評(píng)論