在咱們實際開發報表的時候,咱們須要按必定的業務規則組織好報表的模板設計,讓報表儘量的貼近實際的需求,在以前的隨筆中《使用FastReport報表工具生成報表PDF文檔》介紹了FastReport生成常規報表的處理,本篇隨筆回顧常規報表的處理效果,並介紹基於FastReport生成標籤紙打印須要的報表格式。html
咱們通常處理報表的時候,大多數狀況碰到的是明細報表,或者有主從表這種樣式的報表格式,明細報表就是隻須要設計一個表頭,按列表展現便可,以下所示格式。瀏覽器
或者相似一個基於XtraReport報表的功能界面,以下面圖示所示。框架
這裏面涉及的字段,包括字符型、日期型,數值型、枚舉類型等,還有統計值、打印時間(參數),所以也算一個比較完整的報表展現了。工具
或者一些有一條記錄構建成的報表信息,以下報表所示,這些也只是設計模板上的差別,在模板裏面綁定對應的字段或者參數便可實現。post
還有一種是主表有信息,從表有明細的數據展現方式,這個在隨筆《使用FastReport報表工具生成報表PDF文檔》有介紹過。測試
以前在隨筆《在Winform開發中使用Grid++報表》和《在Bootstrap開發框架中使用Grid++報表》中介紹了使用銳浪報表來設計展示標籤打印報表的處理,以下效果所示。url
本篇隨筆介紹基於FastReport報表工具生成標籤打印文檔的操做。spa
其實若是細心查找,FastReport也提供了不少Demo案例,其中就有標籤的案例介紹,設計效果以下所示。設計
報表預覽效果以下所示。3d
咱們要作的相似,不過咱們須要增長二維碼、條碼上去進行打印而已。
首先咱們須要設計一個報表模板,設計格式以下所示。
在其中咱們須要加入一個數據源進行綁定和測試預覽效果,咱們選擇SQLServer一個表的數據進行建立數據源,以下所示。
設計報表,咱們須要根據實際標籤紙張預先設計好報表頁面大小,以下所示。
若是須要展現多少列,能夠經過頁面設置中的列進行指定劃分多少列,以下所示。
不過在實際測試的時候,這樣的屬性設置,報表渲染的時候,是按指定高度,從左列到右列進行依次展示的,若是咱們須要按實際渲染高度,那麼這裏能夠設置爲1,而後由數據區進行設置列的數量便可。以下所示。
數據區設置列數爲實際須要展示的列數,這個根據寬度預覽看大概設計多少列合適,讓頁面高寬儘量利用好便可。
二維碼標籤報表格式設計效果大概以下所示。
咱們使用數據源的數據預覽下效果,效果仍是槓槓的。
報表模板弄好了,咱們就須要如何生成FastReport報表或者導出PDF了。
我在以前的隨筆《使用FastReport報表工具生成報表PDF文檔》裏面介紹了FastReport報表的處理代碼,這裏作法依舊差很少,綁定數據源便可展現或者導出PDF了。
最主要的代碼以下所示。
//生成PDF報表文檔到具體文件 Report report = new Report(); report.Load(reportPath); //定義參數和數據格式 var dict = new Dictionary<string, object>(); var dt = DataTableHelper.CreateTable("ID,Name,CurrDept,Code,UsePerson,KeepAddr"); if (list != null) { foreach (var info in list) { var dr = dt.NewRow(); dr["ID"] = info.ID; dr["Name"] = info.Name; dr["CurrDept"] = info.CurrDept; dr["Code"] = info.Code; dr["UsePerson"] = info.UsePerson; dr["KeepAddr"] = info.KeepAddr; dt.Rows.Add(dr); } } //刷新數據源 foreach (string key in dict.Keys) { report.SetParameterValue(key, dict[key]); } report.RegisterData(dt, "T_Asset"); //運行報表 report.Prepare();
若是須要導出PDF,那麼代碼增長部分導出處理便可。
//導出PDF報表 PDFExport export = new PDFExport(); report.Export(export, realPath); report.Dispose();
咱們來看看實際在瀏覽器預覽的效果,以下所示。
以上效果結合了pdfJS的在線預覽PDF操做,若是須要了解PDF的在線處理,參考下隨筆《實如今線預覽PDF的幾種解決方案》。