日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

项目中使用RDLC报表

發布時間:2024/9/20 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 项目中使用RDLC报表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文地址:http://www.cnblogs.com/wuhuacong/p/4109833.html

RDLC是一個不錯的報表,有著比較不錯的設計模式和展現效果,在我的Winform開發里面,使用RDLC也是一個比較方便操作,如可以參考文章《DevExpress的XtraReport和微軟RDLC報表的使用和對比》或者《會員管理系統的設計和開發(2)-- RDLC報表的設計及動態加載》進行了解。但是基于MVC方式,如何構建和展現RDLC報表呢?本文主要介紹如何在基于MVC4+EasyUI的Web開發框架上進行RDLC的集成和使用。

1、RDLC綁定數據源

RDLC的報表設計,是使用VS直接進行編輯的,因此它不管是在Web上,還是在Winform上,設計的方式都差不多,好像綁定數據源的方式有一點不同,WInform的可以選擇基于,而Web的只能基于數據庫連接方式構建數據綁定對象。

它們兩者之間在創建數據源的時候,彈出的對話框選擇界面如下所示,看起來Winform的方式選擇數據源的方式很多樣化。

最終,通過Web方式構建了一個數據集,并在設計視圖里面設計一個用戶的報表界面,并綁定它們對應的字段,具體如下所示。

在RDLC的設計界面上,它們的操作內容好像是一樣的,沒有什么差異,可以使用各種數學函數SUM、COUNT等,也可以使用對字段的表達式,格式樣式等方式,從而方便構建出一些準確、美觀的報表,這部分可以參考文中開始的那兩篇引用文章,這里就不再進行細節上的贅述,因為它們是一樣的。

2、在Web界面上創建一些功能按鈕和實現

我們在MVC項目里面,創建并保存好RDLC報表文件到對應的Report目錄上,如下所示。

然后創建一個視圖,并在視圖里面構建一些按鈕,方便構建查詢不同的報表格式功能,具體效果如下所示。

HTML代碼如下所示

<div style="padding:10px; border:1px solid black"><div><a href="@Url.Action("UserRdlcReport", new { format = "Image" })" class="easyui-linkbutton" data-options="iconCls:'icon-view'">圖片輸出</a><a href="@Url.Action("UserRdlcReport", new { format = "PDF" })" class="easyui-linkbutton" data-options="iconCls:'icon-view'"> PDF輸出</a><a href="@Url.Action("UserRdlcReport", new { format = "Excel" })" class="easyui-linkbutton" data-options="iconCls:'icon-view'">Excel輸出</a><a href="@Url.Action("UserRdlcReport", new { format = "Word" })" class="easyui-linkbutton" data-options="iconCls:'icon-view'">Word輸出</a></div></div><div id="autoUpdate" style="display: none; overflow-y: auto" class="SlideContainer"><table width="100%" height="100%"><tr><td><table><tr><td></td><td></td></tr></table></td></tr><tr><td><iframe id="myReport" width="100%" height="800"></iframe></td></tr></table></div>

完成這些布局后,我們還需要在對應的控制器里面,對RDLC的報表進行數據綁定并呈現出來。

綁定RDLC報表,并賦值對應的數據源操作如下所示。

LocalReport localReport = new LocalReport();localReport.ReportPath = Server.MapPath("~/Report/WHC.UserReport.rdlc");var dt = baseBLL.GetAll();ReportDataSource reportDataSource = new ReportDataSource("DataSet1", dt);localReport.DataSources.Add(reportDataSource);

呈現的操作代碼如下所示,默認我們以圖片進行展現。

Warning[] warnings;string[] streams;byte[] renderedBytes;renderedBytes = localReport.Render(reportType,deviceInfo,out mimeType,out encoding,out fileNameExtension,out streams,out warnings);return File(renderedBytes, (format.ToLower() == "image") ? "image/jpeg" : mimeType);

最終默認可以看到圖片的報表展現效果。

當然,我們上面還有其他功能的操作,如PDF功能的展現,這個是一個不錯的格式展現,每頁分的很好,如果在IE里面,會獨立打開PDF文件;如果是Chrome瀏覽器,則會在瀏覽器里面直接打開,比較好。

當然,Excel和Word就只能下載進行查看了,因為瀏覽器并不支持直接在上面進行預覽查看的了,除非借助其他控件或者做法。

3、圖片內容的連續輸出

我們了解RDLC的話,應該知道,一般RDLC報表,它都是通過一個DeviceInfo的信息進行展現的,如下所示是一個標準的DeviceInfo對象。

string deviceInfo ="<DeviceInfo>" +" <OutputFormat>" + deviceType + "</OutputFormat>" +" <PageWidth>8.5in</PageWidth>" +" <PageHeight>11in</PageHeight>" +" <MarginTop>0.5in</MarginTop>" +" <MarginLeft>1in</MarginLeft>" +" <MarginRight>1in</MarginRight>" +" <MarginBottom>0.5in</MarginBottom>";

但是這樣的內容,如果展現圖片的話,就只會展示一頁的內容,一般是800的高度這樣子,但是我的報表里面可能有很多記錄,如何能夠讓它全部展現出來呢?

方法是有的,不過不是很完美,就是需要計算大概的尺寸,然后修改PageHeight的數值,讓它動態的刪除最大的記錄,達到全部內容都可以輸出看到。

為了達到這個目的,我對圖片格式輸出的報表,對它的高度進行了一個簡單的計算,然后換成它的標準高度,這樣代碼如下所示。

if(format.ToLower() == "image"){double inchValue = (dt.Count / 37.0) * 11; deviceInfo += string.Format(" <PageHeight>{0}in</PageHeight>", inchValue);}else{deviceInfo += " <PageHeight>11in</PageHeight>";}

最后界面代碼如下所示。

總結

以上是生活随笔為你收集整理的项目中使用RDLC报表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。